php-pdo准备和执行

vktxenjb  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(252)

我得到以下错误:

Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined

不幸的是,我没有看到问题:

$sql = "UPDATE work 
            SET status = :status, date_from = :dateFrom
            WHERE id = :id
            ";
    $query = $database->prepare($sql);
    $query->execute(array(
        ':status' => $status,
        ':date_from' => $dateFrom,
        ':id' => $id
    ));
vmdwslir

vmdwslir1#

prepared方法将生成一个没有值的预编译查询,execute方法将生成一个与每个空参数相关联的值数组,其余的将在低于sql的级别上进行,其中查询是预编译的,并且值只在之后获取,以避免如此著名的sql注入。只是分享这些,这样你就可以了解实际发生的事情。

inb24sb2

inb24sb22#

这是个拼写错误

:dateFrom !== :date_from

所以把代码改成

$sql = "UPDATE work 
            SET status = :status, date_from = :dateFrom
            WHERE id = :id
            ";
    $query = $database->prepare($sql);
    $query->execute(array(
        ':status' => $status,
        ':dateFrom' => $dateFrom,
        ':id' => $id
    ));

相关问题