首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP PDO准备和执行

PHP PDO准备和执行
EN

Stack Overflow用户
提问于 2018-08-19 04:33:55
回答 2查看 501关注 0票数 0

我收到以下错误:

代码语言:javascript
复制
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined

不幸的是,我看不出问题:

代码语言:javascript
复制
    $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
    ));
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-19 04:39:11

这是拼写错误

代码语言:javascript
复制
:dateFrom !== :date_from

因此,将代码更改为

代码语言:javascript
复制
$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
    ));
票数 4
EN

Stack Overflow用户

发布于 2018-08-19 08:55:58

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51912344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档