sql >> Database >  >> RDS >> Mysql

Simple Insert werkt met phpmyadmin maar niet met php

Voor de zekerheid:wanneer je deze 4 query's probeert uit te voeren vanuit PHP, bel je mysql_query vier keer ?

Bijvoorbeeld:

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


Wat ik bedoel is:je kunt niet meerdere afzonderlijke zoekopdrachten tegelijk verzenden, met slechts één aanroep naar mysql_query (citaat, nadruk van mij) :

Je moet je zoekopdrachten "scheiden" -- wat waarschijnlijk iets is dat phpMyAdmin doet zonder het je te vertellen.

En, zoals @Alexandre opmerkte in de reacties :


Als je de mysqli_* gebruikt functies (en niet mysql_* ) om toegang te krijgen tot uw database, kunt u proberen mysqli_multi_query .

Helaas is er zo'n functie voor mysql_* .

(BTW:de mysql_* API is de oude -- het zou beter zijn, vooral voor een nieuw project, om mysqli_* te gebruiken )


Bewerken na de opmerking:

Als het om prestaties gaat, ja, één aanroep doen naar de database, in plaats van vier opeenvolgende PHP <-> MySQL belt, kan beter.

In dit geval zou je kunnen proberen de invoegsyntaxis te gebruiken die het mogelijk maakt om meerdere regels tegelijk in te voegen; zie 12.2.5. INSERT-syntaxis in de handleiding van MySQL (citaat) :



  1. Een voorbeeld om de kwetsbaarheid van SQL-injectie en de preventie ervan in Oracle aan te tonen

  2. Geen SQL-impasse door ontwerp - enige coderingspatronen?

  3. Hoe verbinding maken met localhost met postgres_fdw?

  4. Null-resultaten opnemen in group_concat