php中的MySQL更新不起作用

php中的MySQL更新不起作用,php,mysql,Php,Mysql,更新查询不工作 问题是$rs->TestAssignmentId$currecord的值没有传递给if块 停止使用mysql_* 开始使用这样的东西,这里是一个很好的例子。您应该尽快更改,因为您的代码是开放的。以简单的形式,使用一些表名: while($rs=mysql_fetch_object($searchRes1)){ $currecord可能未定义,因为 if ( isset($_REQUEST["epSave"]) ) { $sql = "SELECT * FROM tbl

更新查询不工作

问题是$rs->TestAssignmentId$currecord的值没有传递给if块

停止使用mysql_*

开始使用这样的东西,这里是一个很好的例子。您应该尽快更改,因为您的代码是开放的。以简单的形式,使用一些表名:

while($rs=mysql_fetch_object($searchRes1)){
$currecord可能未定义,因为

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
        }
    }
}
没有发生。这个流程应该修改,似乎while应该只发生在if中,因为它的结果只在那里使用

非常简单,我删除了一些部分来表达逻辑,该流程可能会帮助您:


在phpMyAdmin中回显更新查询并复制/粘贴。检查它是否正常工作。不要使用不推荐使用的mysql_*功能可能因为您没有正确连接到mysql服务器,所以在第一个sql结束时,您还缺少一个双引号。很好地检查函数的名称。好的,我想我发现了问题。变量$currecord没有给我一个值,我猜这是因为作用域的缘故@Voitcus-您能告诉我如何将$rs->TestAssignmentId的值放入if条件中,在这种情况下,当用户按下Submit或Save时会调用该条件。谢谢PDO的建议,这会起作用,但我通过设置cookies找到了解决方法。是的,我知道使用mysql_*是一种不好的做法,但我目前正在开发一个遗留系统,正在进行全面的检修。我将切换到mysqli_*并将应用特殊字符弃用来保护系统不受sql注入的影响
$stmt = $db->prepare( "SELECT FROM tbltestassignment WHERE TeacherId=?" );
$stmt->execute(array(
    $_SESSION["UserId"]),
);
$rows = $stmt->fetch( \PDO::FETCH_ASSOC );
while($rs=mysql_fetch_object($searchRes1)){
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
        }
    }
}