【发布时间】:2015-04-01 03:57:45
【问题描述】:
我正在开发一个使用面向 PDO 的 PHP 对象的应用程序。我一直在努力寻找查询执行失败的原因。事实证明,我提供了一个值作为字符串格式的参数,以绑定到一个数组中。我有一个通用循环,它将所有参数绑定到我的查询的问号占位符。那当然会考虑参数都是字符串格式的。但是我有整数格式的列。即使我使用(int) 或intval() 将变量转换为整数,它也不起作用。所以我相信我必须将显式数据类型指定为 PDO::PDO_PARAM_INT 。但我对所有查询都有这样的代码:
查询示例:
$this->db->query("INSERT INTO users (name, numberOfCar") VALUES (?,?) ,
array('Jake', 5));
bindValue() 部分:
$x = 1;
if( count($params) ){
foreach($params as $param){
$this->_query->bindValue($x, $param);
$x++;
}
}
我该怎么做?我的意思是知道如何修改代码来解决这个问题?不确定我是否必须修改代码的哪一部分,但我很困惑地想到解决方法。提前谢谢你。
编辑:PHP 版本 5.3.10,PDO 连接到 Sybase
【问题讨论】:
-
我只是把它扔在这里没有测试,但这应该可以工作:
$query = $this->db->prepare("INSERT INTO users (name, numberOfCar") VALUES (:values)"),然后是$query->execute(array('values' => array('Jake', 5))); -
我不能使用这种解决方案,因为有些列具有固定值。