PHP中的MySQL更新无法正常工作

时间:2015-06-22 09:52:01

标签: php mysql

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 } ?>

1 个答案:

答案 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
        }
    }
}