update
查询无效。
问题是$rs->TestAssignmentId
,$currecord
的值未传递到if
块。
This should happen when user presses the submit button
$sql="SELECT * FROM tbltestassignment
WHERE TeacherId=".$_SESSION["UserId"]." AND StudentId=".$_GET["StudentId"]." AND TestId=".$_GET["TestId"];
$searchRes1 = Execute($sql);
while($rs=mysql_fetch_object($searchRes1)) {
$temp = GetSingleReconrd('tbltestassignment','QuestionIds','StudentId',$rs->StudentId);
$quesIds = explode(',',$temp);
$totalQues = count($quesIds);
$currecord = $rs->TestAssignmentId;
$temp = GetSingleReconrd('tbltestassignment','AnswerIds','StudentId',$rs->StudentId);
$ansIds = explode(',',$temp);
}
//echo "<pre>".$currecord."</pre>";
if(isset($_REQUEST["epSave"])) {
$score = array_filter($_REQUEST['score']);
$sqlup = 'UPDATE tbltestassignment SET `Score` = "'.$score.'" WHERE `TestAssignmentId` = '.$currecord;
mysql_query($sqlup);
$_SESSION["_msg"] = "Marks Successfully Added..!";
$_SESSION["_msgtype"] = 1;
$a=8;
$url = "correct.php?TestId=".$a;//$_GET['TestId'];
header("location:".$url);
die();
}
<?php
for($i=0; $i<$totalQues; $i++){
?>
<tr>
<td style="text-align:center">
<input name="score[]" id="score<?php echo $i ?>" type="text" placeholder="Enter marks here">
</td>
</tr><?php } ?>
答案 0 :(得分:0)
停止使用mysql_*
开始使用PDO之类的内容,这是一个不错的tutorial for MySQL developers。您应该尽快更改,因为您的代码已向sql injection开放。以简单的形式,使用您的一些表名:
$stmt = $db->prepare( "SELECT FROM tbltestassignment WHERE TeacherId=?" );
$stmt->execute(array(
$_SESSION["UserId"]),
);
$rows = $stmt->fetch( \PDO::FETCH_ASSOC );
$currecord
可能未定义,因为
while($rs=mysql_fetch_object($searchRes1)){
不会发生。应该修改这个流程,似乎只会在if中发生,因为它的结果只在那里使用(AFAIK)
非常简单,我删除了一些部分只表达逻辑,这个流程可能对你有帮助:
if ( isset($_REQUEST["epSave"]) ) {
$sql = "SELECT * FROM tbltestassignment WHERE TeacherId=? AND StudentId=? AND TestId=?";
$stmt = $pdo ->prepare($sql);
$stmt->execute([
$_SESSION["UserId"],
$_GET["StudentId"],
$_GET["TestId"],
]);
if ($stmt->rowCount() > 0) {
while( $rs = $stmt->fetch(\PDO::FETCH_ASSOC) ) {
// here you know what to do, $rs is an array
}
}
}