2012-04-10 3 views
0

아래 코드는 제가 시도한 코드입니다 만 스크립트를 제대로 실행시키기 위해 올바른 수정을 할 수는 없습니다.LAST_INSERT_ID()가있는 PHP를 사용하여 여러 테이블에 삽입

$sql = 'INSERT INTO clients (first_name, last_name, email) VALUES('.$_POST['first_name'].', '.$_POST['last_name'].', '.$_POST['email'].') 
INSERT INTO client_data (client_id, phone, zip, note) VALUES(LAST_INSERT_ID(), '.$_POST['phone'].', '.$_POST['zip'].', '.$_POST['message'].')'; 

mysql_query($sql) or die (mysql_error()); 

모든 도움을 주시면 감사하겠습니다.

+3

사이드 노트 : '지미 오브라이언'이 주문하면 어떻게됩니까? –

+3

아니면 작은 바비 테이블? (http://xkcd.com/327/) –

+0

@ ÁlvaroG.Vicario 해커가 이기기 때문에 그럴 수 있습니다. 귀하의 의견을 위생적으로 기억하십시오! – Matthematics

답변

3

이 같은 mysql_query();

사용 뭔가 두 개의 SQL 문을 실행할 수 없습니다

$sql = 'INSERT INTO clients (first_name, last_name, email) VALUES('.$_POST['first_name'].', '.$_POST['last_name'].', '.$_POST['email'].')'; 
mysql_query($sql); 

$clientId = mysql_insert_id(); 

$sql = 'INSERT INTO client_data (client_id, phone, zip, note) VALUES('.$clientId.', '.$_POST['phone'].', '.$_POST['zip'].', '.$_POST['message'].')'; 

mysql_query($sql) or die (mysql_error()); 

그러나 은 SQL 주입에 최대 읽기 및 방법을 방지하기 바랍니다.

$firstName = mysql_real_escape_string($_POST["first_name"]); 
$lastName = mysql_real_escape_string($_POST["last_name"]); 
$email = mysql_real_escape_string($_POST["email"]); 
$phone = mysql_real_escape_string($_POST["phone"]); 
$zip = mysql_real_escape_string($_POST["zip"]); 
$message = mysql_real_escape_string($_POST["message"]); 

mysql_query("INSERT INTO clients (first_name, last_name, email) VALUES ('{$firstName}', '{$lastName}', '{$email}')") or die(mysql_error()); 
mysql_query("INSERT INTO client_data (client_id, phone, zip, note) VALUES ('". mysql_insert_id() ."', '{$phone}', '{$zip}', '{$message}')") or die(mysql_error()); 
0

당신은 두 개의 별도 mysql_query 전화로 그것을 깨고 mysql_insert_id 함수를 사용해야합니다

$sql_insert_clients = "INSERT INTO clients (first_name, last_name, email) VALUES(".$_POST['first_name'].", ".$_POST['last_name'].", ".$_POST['email'].")"; 
mysql_query($sql_insert_clients) or die (mysql_error()); 

$sql_insert_client_data = "INSERT INTO client_data (client_id, phone, zip, note) VALUES(".mysql_insert_id().", ".$_POST['phone'].", ".$_POST['zip'].", ".$_POST['message'].")"; 
mysql_query($sql_insert_client_data) or die (mysql_error()); 
0

그냥 2 개 쿼리합니다 :

-1

당신의 단지 분할 세미콜론 누락 삽입의

$sql = 'INSERT INTO clients (first_name, last_name, email) 
     VALUES('.$_POST['first_name'].', '.$_POST['last_name'].', '.$_POST['email'].')'."; ".' INSERT INTO client_data (client_id, phone, zip, note) VALUES(LAST_INSERT_ID(), '.$_POST['phone'].', '.$_POST['zip'].', '.$_POST['message'].')'; 

mysqli_multi_query($sql) or die (mysql_error()); 

실행해야하는 SQL 쿼리 (dummy co ntent)은

INSERT INTO clients (first_name, last_name, email) VALUES('test', 'surname', email); INSERT INTO client_data (client_id, phone, zip, note) VALUES(LAST_INSERT_ID(), 'phone', 'zip', 'message'); 
+0

이것은 MySQL에서 작동하지 않습니다 –

+0

난 그냥 더미 MySQL 데이터베이스에서 이것을 테스트했습니다 .. 그것은 실제로 작동하지 않습니다. – michaelotoole

+0

[mysqli_multi_query] (http://php.net/manual/en/mysqli.multi-query.php)에서는 가능하지만 [mysql_query] (http://php.net/manual/en/function .mysql-query.php). – Travesty3

관련 문제