如何在PHP中更新Crud?

时间:2018-12-22 22:12:00

标签: php mysql oop pdo

我的php crud(面向对象和pdo)更新不起作用。它显示了

  

致命错误:未捕获PDOException:SQLSTATE [HY093]:无效的参数编号:参数未定义。在$ stmtExec = $ stmt-> execute();

我试图更改变量以及参数,参数和间距,但是仍然得到无效的结果。我该如何解决?

public function updateId($fields, $stud_id) {

    $st = "";
    $counter = 1;
    $total_fields = count($fields);

    foreach($fields as $key => $value){

        if($counter == $total_fields){

            $set = "$key = :".$key;
            $st = $st.$set;

        } else {

            $set = "$key = :".$key.", ";
            $st = $st.$set;
            $counter++;
        }
    }
    $sql = "";
    $sql.= "UPDATE students SET ".$st;
    $sql.= "WHERE id = ".$stud_id;
    $stmt = $this->connect()->prepare($sql);

    foreach($fields as $key => $value){
        $stmt->bindValue(':'.$key, $value);
    }
    $stmtExec = $stmt->execute();

    //if successful
    if($stmtExec){
        header('Location: index.hp');
    }
}

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的代码,则需要在此处再放置一个空格:

$set = "$key = :".$key." ";

如果您错过该空格,则关键字WHERE将成为您的最后一个参数名称的一部分。