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_multi_query() 的下一个结果集,可以通过 mysqli_store_result() 或 mysqli_use_result() 检索。

既然你没有使用mysqli_multi_query()你不需要也不能调用mysqli_next_result

在您的代码中,下一个结果是通过 using 检索的mysqli_fetch_assoc,并且您在每次调用mysqli_query.

于 2012-09-09T01:39:38.950 回答