sql >> Database teknologi >  >> RDS >> Mysql

Simple Insert virker med phpmyadmin, men ikke med php

Bare for at være sikker:når du forsøger at udføre disse 4 forespørgsler fra PHP, kalder du mysql_query fire gange?

For eksempel :

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)");


Det jeg mener er:du kan ikke sende flere forskellige forespørgsler på én gang med kun ét opkald til mysql_query (citerer, fremhæver mine) :

Du skal "adskille" dine forespørgsler -- hvilket sandsynligvis er noget phpMyAdmin gør uden at fortælle dig det.

Og som @Alexandre påpegede i kommentarerne:


Hvis du bruger mysqli_* funktioner (og ikke mysql_* ) for at få adgang til din database, kan du prøve at bruge mysqli_multi_query .

Desværre er der en sådan funktion for mysql_* .

(BTW:mysql_* API er den gamle -- det ville være bedre, især for et nyt projekt, at bruge mysqli_* )


Rediger efter kommentaren:

Hvis det handler om præstationer, ja, at foretage et enkelt opkald til databasen i stedet for fire på hinanden følgende PHP <-> MySQL opkald, kunne være bedre.

I dette tilfælde kan du prøve at bruge insert-syntaksen, der gør det muligt at indsætte flere linjer på én gang; se 12.2.5. INDSÆT syntaks i MySQL's manual (citering) :



  1. Komplekse databaseforespørgsler i yii2 med Active Record

  2. Ved hjælp af Python kan du hurtigt indsætte mange kolonner i Sqlite\Mysql

  3. SYSUTCDATETIME() vs GETUTCDATE() i SQL Server:Hvad er forskellen?

  4. php-syntaksfejl, uventet T_VARIABLE, forventer ',' eller '' på linje 29