PHP PDO 准备和执行

PHP PDO prepare and execute

我收到以下错误:

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
    ));

拼写错误

: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
    ));

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