1

私はこのphp関数をしばらくの間動作させようとしましたが、成功しませんでした. 何らかの理由で、実行するたびに「コマンドが同期していないため、このコマンドを今すぐ実行できません」というエラーがmysqlに表示されます。私が行った他のすべてのphpプロジェクトで行ったのと同じテクニックを使用しています。これは、そのエラーを回避できるように mysqli->next_result を呼び出しています。ただし、ここで呼び出すと効果がないようです。

if($questionType == 5){
    global $To;
        $to="znielsen@gbpi.net";
        $subject = "txtoutage session completed";
        $message ="Session completed by: ".$number." \n on: ".date("Y-m-d H:i:s")." \n";
        if($sid = $mysqli->query("CALL GetSessionFromPhoneNumProc('$number')")){
            $sids = $sid->fetch_assoc();
            $sid->free();
            $sids = $sids['sid'];
            $mysqli->close();
            $res->free();
            if($res = $mysqli->query("CALL GetAnswersFromSession('$sids')")){
                while($row = $res->fetch_assoc()){
                $mysqli->next_result();
                $qid = $row['Question_ID'];
                $question = $mysqli->query("SELECT Question_Text FROM questions WHERE Question_ID = '$qid'");
                $question = $question->fetch_assoc();
                $question = $question['Question_Text'];
                if($row['Answer_Text'] == null){
                    $displayText = $row['Answer_Body'];
                }
                else{
                    $displayText = $row['Answer_Text'];
                }
                $message = $message.$question.": ".$displayText." \n";
            }
        }
        else{
            $log->logError("mysql error sess: (" . $mysqli->errno . ") " . $mysqli->error);
        }
    }
    else{
        $log->logError("mysql error answers: (" . $mysqli->errno . ") " . $mysqli->error);
    }
    $from = "txtoutage@gbpi.net";
    $headers = "From:" . $from;
    mail($to,$subject,$message,$headers);
}
4

1 に答える 1

0

コードからへの呼び出しを削除しmysqli_next_resultます (この行: $mysqli->next_result();)。

PHP ドキュメントで説明されているように、mysqli_next_resultは、mysqli_store_result() または mysqli_use_result() によって取得できる mysqli_multi_query() への前の呼び出しから次の結果セットを準備します。

を使用しmysqli_multi_query()いないので、 を必要とせず、呼び出してはなりませんmysqli_next_result

あなたのコードでは、次の結果は を使用して取得されmysqli_fetch_assoc、 を呼び出すたびにこの関数を既に使用していますmysqli_query

于 2012-09-09T01:39:38.950 に答える