sql >> Databasteknik >  >> RDS >> Mysql

Simple Insert fungerar med phpmyadmin men inte med php

Bara för att vara säker:när du försöker köra dessa 4 frågor från PHP, anropar du mysql_query fyra gånger?

Till exempel :

mysql_query("INSERT INTO um_group_rights (`um_group_id`,`cms_usecase_id`,`um_right_id`) VALUES (2,1,1)");
mysql_query("INSERT INTO um_group_rights (`um_group_id`,`cms_usecase_id`,`um_right_id`) VALUES (2,2,1)");
mysql_query("INSERT INTO um_group_rights (`um_group_id`,`cms_usecase_id`,`um_right_id`) VALUES (2,3,1)");
mysql_query("INSERT INTO um_group_rights (`um_group_id`,`cms_usecase_id`,`um_right_id`) VALUES (2,4,1)");


Vad jag menar är:du kan inte skicka flera distinkta frågor samtidigt, med bara ett anrop till mysql_query (citat, min betoning) :

Du måste "separera" dina frågor -- vilket förmodligen är något phpMyAdmin gör utan att berätta för dig.

Och som @Alexandre påpekade i kommentarerna :


Om du använder mysqli_* funktioner (och inte mysql_* ) för att komma åt din databas kan du prova att använda mysqli_multi_query .

Tyvärr finns det en sådan funktion för mysql_* .

(BTW:mysql_* API är det gamla -- det skulle vara bättre, särskilt för ett nytt projekt, att använda mysqli_* )


Redigera efter kommentaren:

Om det handlar om prestationer, ja, gör ett enda anrop till databasen, istället för fyra på varandra följande PHP <-> MySQL samtal, kunde vara bättre.

I det här fallet kan du prova att använda infogningssyntaxen som tillåter att infoga flera rader samtidigt; se 12.2.5. INFOGA syntax i MySQL:s manual (citat) :



  1. Är det möjligt att skicka objekt till PL SQL-paketproceduren som parametrar?

  2. Få räkningar av alla tabeller i ett schema

  3. Varför producerar en parameteriserad fråga mycket långsammare frågeplan jämfört med icke-parameteriserad fråga

  4. Implementering av behörigheter baserade på rykte