php - PDO PostgreSQL 绑定(bind)错误

标签 php postgresql pdo

我发现当我尝试使用参数运行更新查询时,我遇到了错误

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/

相关文章:

PHP 包括更改 HTML 布局吗?

php - 从cpanel crontab调用/usr/bin/php总是给出而不是cgi-fcgi

java - 根据用户输入在PreparedStatement中使用setTime()或setNull()

php - 如何处理可能有重复条目的 PDO 事务

php - PDO 中的操作数选择

javascript - Ajax 文件上传 Vue.js

php - 数组转换为 mysql 列语法

Laravel Restful API

postgresql - 如何防止postgresql自动转换时区?

php - 我可以在 PHP 中混合使用 MySQL API 吗?