2016-04-06 19 views
1

Ich habe ein Skript, das eine SQL-Einfüge- oder Update-Skript abhängig von mehreren Faktoren generiert. Unten ist der String-Wert des Skripts es zu erzeugen:Ausführen mehrerer Abfragen über eine einzige PHP-Funktion mysqli_query

INSERT INTO AAB_EVENT_SHIFTS (EVENT_ID ,SHIFT ,START_TIME ,END_TIME 
    ,CREATE_USER ,CREATE_DATE ,MODIFY_USER ,MODIFY_DATE) VALUES (6 ,1 
    ,STR_TO_DATE('04/01/2016 10:00 am', '%m/%d/%Y %I:%i %p') 
    ,STR_TO_DATE('04/01/2016 11:00 am', '%m/%d/%Y %I:%i %p') ,14 ,now() ,14 ,now() 
    ); INSERT INTO AAB_EVENT_SHIFTS (EVENT_ID ,SHIFT ,START_TIME ,END_TIME ,CREATE_USER ,CREATE_DATE ,MODIFY_USER ,MODIFY_DATE) VALUES (6 ,2 ,STR_TO_DATE('04/01/2016 11:00 am', '%m/%d/%Y %I:%i %p') ,STR_TO_DATE('04/01/2016 12:00 pm', '%m/%d/%Y %I:%i %p') ,14 ,now() ,14 ,now()); 
INSERT INTO AAB_EVENT_SHIFTS (EVENT_ID ,SHIFT ,START_TIME ,END_TIME ,CREATE_USER ,CREATE_DATE ,MODIFY_USER ,MODIFY_DATE) VALUES (6 ,3 
,STR_TO_DATE('04/01/2016 12:00 pm', '%m/%d/%Y %I:%i %p') 
,STR_TO_DATE('04/01/2016 1:00 pm', '%m/%d/%Y %I:%i %p') ,14 ,now() ,14 ,now()); 

Wenn ich laufe, dass es völlig in Ordnung, in einem SQL-Editor mit der Datenbank verbunden läuft und fügt alle Zeilen erwartet. Jedoch wenn Sie anrufen, dass die Abfrage so:

$result = mysqli_query($link,$query); 

echo mysqli_error($link); 

gibt diese:

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INSERT INTO AAB_EVENT_SHIFTS (EVENT_ID ,SHIFT ,' at line 24

ich die Art und Weise verändern die Abfrage von erzeugt eine verkettete Zeichenfolge von mehreren Erstellen von Abfragen, um eine Reihe von Abfragen erstellen und sie laufen eins nach dem anderen - das scheint das Problem korrigiert zu haben.

+1

Zeigen Sie, wie Sie Ihre 'query' Variable $ schaffen !! – Saty

+0

Fügen Sie Ihre $ query hinzu oder drucken Sie die Abfrage und führen Sie das gleiche in mysql aus. –

Antwort

1

Sie können nicht mehrere Abfragen über eine einzige PHP mysqli_query Funktion ausführen.
Machen Sie einfach Ihr Skript generieren Array von Abfragen und führen Sie sie nacheinander in einer Schleife.

+0

Das ist genau das, was ich getan habe und es funktioniert jetzt. Danke Kumpel. – Jeff

+0

können Sie mit mysqli_multi_query obwohl? – Jester

+0

@Jester mit multi_query ist nicht so einfach –

0

Sie können entweder eine Schleife durch die Abfragen oder Sie haben die mysqli_multi_query Funktion verwenden, wenn Sie mehrere mit einer Funktion ausgeführt werden soll: mysqli_multi_query

+0

Da fast niemand versteht, was mysqli_multi_query ist und wie man es richtig verwendet, wird dringend empfohlen, es nicht für einen dummen Fall wie diesen zu verwenden. Ein Ergebnis kann überraschend sein. –

+0

@YourCommonSense Ich denke schon, ich muss sagen, ich habe es vorher noch nicht selbst benutzt, aber ich dachte es wäre erwähnenswert. In welchem ​​Fall würdest du sagen, dass es besser wäre, es zu verwenden, anstatt sie nacheinander auszuführen oder einfach nie? – Jester

+0

Wenn Sie eine asynchrone Abfrageausführung benötigen, würde ich sagen. In jedem anderen Fall ist es besser, getrennte Abfragen zu tätigen. –

Verwandte Themen