如何使用PHP变量作为参数正确创建PDO语句?

时间:2012-11-05 14:38:44

标签: php mysql parameters pdo

我目前有以下代码:

$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. 在prepare语句之前执行SELECT查询以确保PDO正常工作。
  3. 在没有将ATTR_EMULATE_PREPARES设置为false的情况下运行代码。
  4. 但这一切都不起作用,有人能让我朝着正确的方向前进吗?

1 个答案:

答案 0 :(得分:2)

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

另外,我更喜欢在值上显式调用bind,但这只是我的OCD首选项。

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