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

Exécuter plusieurs requêtes SQL en une seule instruction avec PHP

Passez 65536 à mysql_connect comme 5ème paramètre.

Exemple :

$conn = mysql_connect('localhost','username','password', true, 65536 /* here! */) 
    or die("cannot connect");
mysql_select_db('database_name') or die("cannot use database");
mysql_query("
    INSERT INTO table1 (field1,field2) VALUES(1,2);

    INSERT INTO table2 (field3,field4,field5) VALUES(3,4,5);

    DELETE FROM table3 WHERE field6 = 6;

    UPDATE table4 SET field7 = 7 WHERE field8 = 8;

    INSERT INTO table5
       SELECT t6.field11, t6.field12, t7.field13
       FROM table6 t6
       INNER JOIN table7 t7 ON t7.field9 = t6.field10;

    -- etc
");

Lorsque vous travaillez avec mysql_fetch_* ou mysql_num_rows, ou mysql_affected_rows, seule la première instruction est valide.

Par exemple, les codes suivants, la première instruction est INSERT, vous ne pouvez pas exécuter mysql_num_rows et mysql_fetch_*. Vous pouvez utiliser mysql_affected_rows pour renvoyer le nombre de lignes insérées.

$conn = mysql_connect('localhost','username','password', true, 65536) or die("cannot connect");
mysql_select_db('database_name') or die("cannot use database");
mysql_query("
    INSERT INTO table1 (field1,field2) VALUES(1,2);
    SELECT * FROM table2;
");

Un autre exemple, les codes suivants, la première instruction est SELECT, vous ne pouvez pas exécuter mysql_affected_rows. Mais vous pouvez exécuter mysql_fetch_assoc pour obtenir une paire clé-valeur de ligne résultant de la première instruction SELECT, ou vous pouvez exécuter mysql_num_rows pour obtenir le nombre de lignes en fonction de la première instruction SELECT.

$conn = mysql_connect('localhost','username','password', true, 65536) or die("cannot connect");
mysql_select_db('database_name') or die("cannot use database");
mysql_query("
    SELECT * FROM table2;
    INSERT INTO table1 (field1,field2) VALUES(1,2);
");