3

私は現在次のコードを持っています:

$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に設定せずにコードを実行しました。

しかし、これはどれもうまくいきません、誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

2

接続ではなく、ステートメントを実行します。 prepare()接続時に、ステートメントを返します。

また、bind on valuesを明示的に呼び出すことを好みますが、これは私の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();
于 2012-11-05T14:41:09.937 に答える