2013-01-11 48 views
0

当我只插入一行到数据库,它显示成功消息,但如果我插入多行到数据库,然后它不显示成功消息?成功消息只显示,如果只有一行被插入

下面是代码:

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



     ?> 

回答

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")); 
} 
0

你绝对确保你得到没有输出? (我假设没有输出,因为你没有提到你得到的是错误信息)

这似乎更有可能是因为你试图输出几个json格式的字符串,无论是在另一端接受它们由于不能正确识别而导致问题的部分。将所有消息推入循环外部定义的数组可能会更好,然后在循环完成后仅响应一次。如果多余的特定查询在其余成功时失败,它也会为您提供更详细的信息。

+0

是啊,我没有得到任何输出,说实话,只有当它没有插入到数据库中,同时测试插入时的错误信息出现在插入和成功的消息不正确值只插入一行我所看到的输出,但是插入多行,不输出 – user1881090

相关问题