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

PHPコマンドの非同期エラー

    mysqli ::queryでMYSQLI_USE_RESULTを使用すると、mysqli_free_result()を呼び出さない限り、後続のすべての呼び出しは同期していないエラーコマンドを返します

    複数のストアドプロシージャを呼び出すと、「コマンドが同期していません。現在、このコマンドを実行できません」というエラーが発生する可能性があります。これは、呼び出しの間に結果オブジェクトでclose()関数を使用している場合でも発生する可能性があります。修正するには問題は、ストアドプロシージャを呼び出すたびに、mysqliオブジェクトでnext_result()関数を呼び出すことを忘れないでください。以下の例を参照してください:

    <?php
    // New Connection
    $db = new mysqli('localhost','user','pass','database');
    
    // Check for errors
    if(mysqli_connect_errno()){
     echo mysqli_connect_error();
    }
    
    // 1st Query
    $result = $db->query("call getUsers()");
    if($result){
         // Cycle through results
        while ($row = $result->fetch_object()){
            $user_arr[] = $row;
        }
        // Free result set
        $result->close();
        $db->next_result();
    }
    
    // 2nd Query
    $result = $db->query("call getGroups()");
    if($result){
         // Cycle through results
        while ($row = $result->fetch_object()){
            $group_arr[] = $row;
        }
         // Free result set
         $result->close();
         $db->next_result();
    }
    else echo($db->error);
    
    // Close connection
    $db->close();
    ?>
    

    これがお役に立てば幸いです



    1. MySQLTunnerツールを使用してMySQL/MariaDBのパフォーマンスを最適化する

    2. MS-SQL AND / ORは条件付きですか(短絡評価を実行します)?

    3. 親のすべての子(子孫)を取得するためのCTE

    4. SQLとは何ですか?SQLを使い始める方法は?