0

データベースに 1 行だけ挿入すると成功メッセージが表示されるのに、データベースに複数の行を挿入すると成功メッセージが表示されないのはなぜですか?

以下はコードです:

$studentid = (isset($_POST['addtextarea'])) ? $_POST['addtextarea'] : array(); 
$sessionid = (isset($_POST['Idcurrent'])) ? $_POST['Idcurrent'] : array();   

$insertsql = "
INSERT INTO Student_Session
(SessionId, StudentId)
VALUES
(?, ?)
";
if (!$insert = $mysqli->prepare($insertsql)) {
// Handle errors with prepare operation here
}                                       

foreach($studentid as $id)
{ 
$insert->bind_param("ii", $sessionid, $id);

$insert->execute();

if ($insert->errno) {
echo json_encode(array('errorflag'=>true,'msg'=>"An error has occured, Students have not been added into the Assessment"));
}else{
echo json_encode(array('errorflag'=>false,'msg'=>"Students have been successfully added into the Assessment"));
}
}


$insert->close();



        ?>
4

2 に答える 2

1

各クエリの後に出力されないすべてのクエリの後に、ステータス メッセージを移動する必要があります。また、故障検出が間違っていました。

$studentid = (isset($_POST['addtextarea'])) ? $_POST['addtextarea'] : array(); 
$sessionid = (isset($_POST['Idcurrent'])) ? $_POST['Idcurrent'] : array();   

$insertsql = "
INSERT INTO Student_Session
(SessionId, StudentId)
VALUES
(?, ?)
";

if (!$insert = $mysqli->prepare($insertsql))
{
    // Handle errors with prepare operation here
}      

$success = true;

foreach($studentid as $id)
{ 
    $insert->bind_param("ii", $sessionid, $id);

    if($insert->execute() === false)
    {
        $success = false;
    }
}

$insert->close();

if($success)
{
    echo json_encode(array('errorflag'=>false,'msg'=>"Students have been successfully added into the Assessment"));
}
else
{
    echo json_encode(array('errorflag'=>true,'msg'=>"An error has occured, Students have not been added into the Assessment"));
}
于 2013-01-11T12:59:26.033 に答える
0

出力が得られないことは間違いありませんか?(代わりにエラーメッセージが表示されることについて言及していないため、出力はないと思います)

いくつかのjson形式の文字列を出力しようとしているため、相手側でそれらを受信して​​いるものは実際には正しく認識されないことによって問題を引き起こしている部分である可能性が高いようです. ループの外側で定義された配列にすべてのメッセージをプッシュし、ループが完了した後に一度だけエコーする方がよい場合があります。また、多くのクエリのうち特定のクエリが失敗し、残りが成功した場合、より詳細な情報が得られます。

于 2013-01-11T12:55:43.107 に答える