Mysql
 sql >> Base de données >  >> RDS >> Mysql

Simple Insert fonctionne avec phpmyadmin mais pas avec php

Juste pour être sûr :lorsque vous essayez d'exécuter ces 4 requêtes depuis PHP, vous appelez mysql_query quatre fois ?

Par exemple :

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


Ce que je veux dire c'est :vous ne pouvez pas envoyer plusieurs requêtes distinctes à la fois, avec un seul appel à mysql_query (citant, c'est moi qui souligne) :

Vous devez "séparer" vos requêtes -- ce que phpMyAdmin fait probablement sans vous le dire.

Et, comme @Alexandre l'a souligné dans les commentaires :


Si vous utilisez le mysqli_* fonctions (et non mysql_* ) pour accéder à votre base de données, vous pouvez essayer d'utiliser mysqli_multi_query .

Malheureusement, il existe une telle fonction pour mysql_* .

(BTW :le mysql_* L'API est l'ancienne -- il serait préférable, surtout pour un nouveau projet, d'utiliser mysqli_* )


Modifier après le commentaire :

Si c'est une question de performances, oui, faire un seul appel à la base de données, au lieu de quatre PHP <-> MySQL successifs appels, ça pourrait être mieux.

Dans ce cas, vous pouvez essayer d'utiliser la syntaxe insert qui permet d'insérer plusieurs lignes à la fois; voir 12.2.5. Syntaxe INSÉRER dans le manuel de MySQL (citant) :