我发现当我尝试使用参数运行更新查询时,我遇到了错误
inconsistent types deduced for parameter
可能是因为目标字段的类型(字符不同),一切都适用于 text 列类型。但我不想仅仅因为这个而改变列类型。然后我被告知我应该直接传递参数(使用 bindValue 或 bindParam,确定每个值的类型)而不是将参数数组发送到 execute 方法。
但是当我这样做的时候我得到了错误
ERROR: bind message supplies 0 parameters, but prepared statement "pdo_stmt_00000001" requires 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());
因此,据了解,绑定(bind)根本不起作用。或者我做错了。 但也许有办法解决它?
我正在运行 PHP 5.4.12 和 PostgreSQL 9.2.3,libpq 8.4.16。
最佳答案
好吧,似乎唯一的解决方案是将所有文本值转换为这样的文本:
update test_table set test_field = :test_field::text
否则会出现类型不一致的错误。
关于php - PDO PostgreSQL 绑定(bind)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15135217/