パラメータを使用して更新クエリを実行しようとすると、エラーが発生することがわかりました
パラメーターに対して推定される型に矛盾があります
おそらくそれは、ターゲット フィールドのタイプ (文字が異なる) が原因で、すべてがテキスト列タイプで正常に機能します。しかし、この理由だけで列タイプを変更したくありません。次に、params配列をexecuteメソッドに送信する代わりに、paramsを直接渡す必要があると言われました(bindValueまたはbindParamを使用して、各値のタイプを決定します) 。
しかし、そうするとエラーが発生します
エラー: バインド メッセージには 0 個のパラメーターが指定されていますが、準備済みステートメント "pdo_stmt_00000001" には 1 個が必要です
テストコードは
$Stmt = $DB->prepare("SELECT * FROM test_table WHERE test_field=:test_field");
$Stmt->bindValue(':test_field', 'test', PDO::PARAM_STR);
$Stmt->execute();
var_dump($DB->errorInfo());
したがって、理解する限り、バインディングはまったく機能しません。または、私はそれを間違っています。でも、もしかしたら解決する方法はあるのでしょうか?
PHP 5.4.12 を PostgreSQL 9.2.3、libpq 8.4.16 で実行しています。