【问题标题】:How to correctly make a PDO statement with PHP variables as parameters?如何正确使用 PHP 变量作为参数的 PDO 语句?
【发布时间】:2012-11-05 22:41:09
【问题描述】:

我目前有以下代码:

$dbh = new PDO('mysql:host='.DATABASE_HOST.';dbname='.DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

$dbh->prepare("INSERT INTO mdr_contacts SET fkRelatieId = 0, reseller = 0, code = :code, naam = :naam");
$dbh->execute(array(":code" => $contact["contact_id"],":naam" => $name));

但这似乎失败了:Fatal error: Call to undefined method PDO::execute() in file.php on line 67

到目前为止,我为完成这项工作所做的工作:

  1. 检查$name$contact 是否存在并具有正确的值。
  2. 在准备语句之前执行 SELECT 查询以确保 PDO 正常工作。
  3. 在 ATTR_EMULATE_PREPARES 未设置为 false 的情况下运行代码。

但是这些都不管用,任何人都可以让我朝着正确的方向前进吗?

【问题讨论】:

    标签: php mysql parameters pdo


    【解决方案1】:

    您执行的是一个语句,而不是一个连接。 prepare() 在连接上,返回一个语句。

    另外,我更喜欢在值上显式调用绑定,但这只是我的强迫症偏好。

     $statement = $dbh->prepare("INSERT INTO mdr_contacts SET fkRelatieId = 0, reseller = 0, code = :code, naam = :naam");
     $statement->bindValue(":code", $contact["contact_id"]);
     $statement->bindValue(":naam", $name);
     $statement->execute();
    

    【讨论】:

    • 天哪,我觉得自己像个白痴。这完全有效。谢谢。
    • @RTB 没问题...还要检查您的“姓名”的拼写;)
    猜你喜欢
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2016-11-13
    • 1970-01-01
    • 2019-03-02
    • 2018-01-19
    • 1970-01-01
    相关资源
    最近更新 更多