2013-03-15 2 views
0

안녕하세요, 나는 사용자 등록 정보가 두 개의 테이블, ptb_users 및 ptb_stats로 분할 될 때 등록 양식의 일부로 실행되는 두 개의 쿼리를 여기에 있습니다.쿼리 실행 후 mysql 결과가 실행되지 않습니까?

두 쿼리 모두 정상적으로 작동합니다. 그러나 두 테이블 모두 자동 증가 열을 가지고 있습니다. ptb_users에서 user_id 열은 자동 증가로 설정되고 쿼리 끝에 user_id와 id가 일치하도록 p_user_id 값이 ptb_users.id로 업데이트/복사되도록 설정됩니다.

하지만 ptb_stats에서 id는 자동 증가 열이며 다시 ptb_stats 테이블 내에서 id에서 user_id 값을 업데이트/복사하도록 요청했습니다. 내가이 코드를 사용하여이 작업을하고있는 중이 야

:이 첫 번째 쿼리 ($ 결과)에서 작동 어떤 이유로 지금

$result = mysql_query("UPDATE ptb_users SET ptb_users.user_id=ptb_users.id"); 
$result2 = mysql_query("UPDATE ptb_users SET ptb_stats.id=ptb_stats.user_id"); 

어디 ptb_users.user_id = ptb_users.id 만 업데이트하도록 요청하고 이 결과가 나오지 않는 이유가 무엇입니까 ($ result 2)? 몇 가지 뛰어

INSERT INTO ptb_stats (display_name) VALUES (...) 
+0

[** 사용하지 마십시오'mysql_로의 값을 할당하려고 * '새로운 코드에서의 기능 **] (http://bit.ly/phpmsql). 그들은 더 이상 유지되지 않으며 [공식적으로 사용되지 않습니다] (http://j.mp/XqV7Lp). [** 빨간색 상자 **] (http://j.mp/Te9zIL)를 참조하십시오. 대신 [* prepared statements *] (http://j.mp/T9hLWi)에 대해 알아보고 [PDO] (http://php.net/pdo) 또는 [MySQLi] (http://php.net/)를 사용하십시오. mysqli) - [이 기사] (http://j.mp/QEx8IB)는 어떤 결정을 내리는 데 도움이 될 것입니다. – Kermit

+0

ptb_users에서 업데이트하는 동안 ptb_stats를 지정하는 것으로 보입니다. – Kickstart

답변

0

나는 추측을 할 것이다 -

$query="INSERT INTO ptb_users (user_id, 
id, 
first_name, 
last_name, 
email) 
VALUES('NULL', 
'NULL', 
'".$firstname."', 
'".$lastname."', 
'".$email."' 
)"; 
mysql_query($query) or dieerr(); 
$result = mysql_query("UPDATE ptb_users SET ptb_users.user_id=ptb_users.id"); 

user_id가 자동 증가 열이지만 업데이트를 사용하여 id 열의 값을 지정하려고한다고 가정합니다.

여기 반면 : -

$query="INSERT INTO ptb_stats (id, 
user_id, 
display_name) 
VALUES('NULL', 
'NULL', 
'".$username."' 
)"; 
mysql_query($query) or dieerr(); 
$result2 = mysql_query("UPDATE ptb_stats SET ptb_stats.id=ptb_stats.user_id"); 

하면 ID가 자동 증가 열라고,하지만 당신은 그것을 user_id를

+0

나는 이것을 시도했지만 어떤 차이도 보이지 않는다. ( –

+0

phpMyAdmin과 같은 다른 응용 프로그램에서 이것을 실행 해 보았는가? – Kermit

0

: 가장 쉬운 해결책이 될 것입니다 이러한 열을 생략

INSERT INTO ptb_stats (...) VALUES('NULL', 'NULL', ... 

: 당신이 리터럴 문자열을 보내는 때문에

$query="INSERT INTO ptb_users (user_id, 
id, 
first_name, 
last_name, 
email) 
VALUES('NULL', 
'NULL', 
'".$firstname."', 
'".$lastname."', 
'".$email."' 
)"; 
mysql_query($query) or dieerr(); 
$result = mysql_query("UPDATE ptb_users SET ptb_users.user_id=ptb_users.id"); 


$query="INSERT INTO ptb_stats (id, 
user_id, 
display_name) 
VALUES('NULL', 
'NULL', 
'".$username."' 
)"; 
mysql_query($query) or dieerr(); 
$result2 = mysql_query("UPDATE ptb_stats SET ptb_stats.id=ptb_stats.user_id"); 
+0

예. 이것은 ptb_users에서 올바르다. user_id는 자동으로 증가하는 열이고 ptb_stats에서는 자동 증가 열은 이드이므로 두 가지가 서로 반대입니다. (서로 반대가됩니다) –

+0

예, 업데이트가 다른 방향으로 진행됩니다. 즉, ptb_stats.id는 자동 증가 열이지만 ptb_stat.user_id의 값을 그 안에 넣으려고합니다. – Kickstart

관련 문제