sql >> データベース >  >> RDS >> Mysql

PHPを使用して1つのステートメントで複数のSQLクエリを実行する

    65536を渡します mysql_connectへ 5番目のパラメータとして。

    例:

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

    mysql_fetch_ *、mysql_num_rows、またはmysql_affected_rowsを使用している場合、最初のステートメントのみが有効です。

    たとえば、次のコードでは、最初のステートメントはINSERTであり、mysql_num_rowsとmysql_fetch_*を実行することはできません。mysql_affected_rowsを使用して挿入された行数を返すことは問題ありません。

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

    別の例、次のコード、最初のステートメントはSELECTであり、mysql_affected_rowsを実行することはできません。ただし、mysql_fetch_assocを実行して、最初のSELECTステートメントから得られた行のキーと値のペアを取得するか、mysql_num_rowsを実行して、最初の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);
    ");
    


    1. SYS_CONNECT_BY_PATH関数を使用する場合のOracleORA-30004、

    2. Androidデバイス用の安全なデータベースを実装するためのベストプラクティス

    3. SQLServerのSTATISTICSPROFILEとは何ですか?

    4. PHPでMySQLテーブルの最後に挿入されたIDを取得するにはどうすればよいですか?