php - php 中的 MySQL 更新不起作用

标签 php mysql

更新查询不起作用。

问题是 $rs->TestAssignmentId 的值 $currecord 未传递到 if block 。

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

最佳答案

停止使用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)){

不会发生。这个流程应该修改,似乎 while 应该只发生在 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
        }
    }
}

关于php - php 中的 MySQL 更新不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30976918/

相关文章:

html - 如何在带有 Handlebars 的表单中插入 SQL 复选框?

PHP登录脚本问题

php - 如何让 Apache 停止缓冲 POST 数据?

php - CakePHP:具有默认值的日期字段

mysql - 如何从其他子查询的字段别名中选择一些数据

mysql - Symfony2 一对一关联双向

mysql - 如何获取具有连接的查询的计数

javascript - JSON stringify 后的 json_decode 无法正常工作

php - 我希望将数据库的一行输出为另一行的链接,但失败了

php - 告诉 Apache 服务器像 PHP 一样处理 .js 和 .css 文件是否安全?