PDO - 动态bindParam - 值为0的奇怪结果

时间:2012-07-19 19:46:59

标签: php mysql pdo

因此,感谢用户的建议,我已开始将代码移植到PDO。一切都很顺利,直到一个小问题。

我有一个小函数来处理我的数据库调用,它基本上生成SQL查询,执行$ dbh-> prepare($ sql),然后遍历并绑定值,然后执行查询。

$sth = $dbh->prepare ($sql);
// bind parameters
if ($action == 'insert' || $action == 'update') {
    reset ($array);
    foreach ($array as $key => &$value) {
        if ($value != 'NOW()') {
            $sth->bindParam (':' . $key, $value);
        }
    }
}
$sth->execute();

这个工作正常,直到我需要插入值'0'。不返回任何错误,但插入到db中的值最终为表中列类型的最大值,在本例中为“137”。

如果有人能够解释发生的事情并提供解决方案,而不是仅仅给我一个解决方案,我希望能够更好地理解这一点。

干杯, 路加

1 个答案:

答案 0 :(得分:1)

您没有正确绑定参数,请查看the manual 你应该使用:

$sth->bindParam (':' . $value, [PARAM TYPE - example: PDO::PARAM_INT]);