2012-04-10 15 views
0

Unten ist der Code, den ich ausprobiert habe, aber ich kann nicht scheinen, die richtigen zwickt, um das Skript ordnungsgemäß ausgeführt werden.Einfügen in mehrere Tabellen mit PHP mit LAST_INSERT_ID()

$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()); 

Jede Hilfe wird sehr geschätzt.

+3

Seitennotiz: was passiert, wenn 'Jimmy O'Brian' eine Bestellung macht? –

+3

Oder kleine Bobby Tische? (http://xkcd.com/327/) –

+0

@ ÁlvaroG.Vicario Die Hacker gewinnen, das ist was passiert. Denken Sie daran, Ihre Eingabe zu bereinigen! – Matthematics

Antwort

3

Sie können nicht ausgeführt werden zwei SQL-Anweisungen mit mysql_query();

Verwendung so etwas wie dieses:

$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()); 

Aber bitte lesen Sie auf SQL-Injektionen und wie sie zu verhindern.

0

Sie sollten es brechen in zwei separate mysql_query Anrufe und verwenden Sie die mysql_insert_id Funktion:

$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

Nur 2 Abfragen machen:

$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()); 
-1

Ihr fehlt nur das Semikolon das Einfügen des aufzuspalten

$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()); 

die SQL-Abfrage, die es ausführen sollte (mit Dummy co ntent) ist

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

Dies funktioniert nicht in MySQL –

+0

Ich habe gerade dies in einem Dummy MySQL Db getestet .. es funktioniert tatsächlich. – michaelotoole

+0

Es ist möglich mit [mysqli_multi_query] (http://php.net/manual/en/mysqli.multi-query.php), aber nicht mit [mysql_query] (http://php.net/manual/en/function) .mysql-query.php). – Travesty3

Verwandte Themen