我收到以下错误:
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
));
发布于 2018-08-19 04:39:11
这是拼写错误
: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
));
发布于 2018-08-19 08:55:58
准备好的方法将生成一个没有值的预编译查询,execute方法将生成一个与每个空参数关联的值数组,其余的发生在比SQL更低的级别,在SQL中查询是预编译的,只有在之后才获取值,以避免如此著名的SQL注入。只是分享一下,这样你就可以了解实际发生的事情了。
https://stackoverflow.com/questions/51912344
复制相似问题