0

因此,感谢这里用户的建议,我已经开始将我的代码移植到 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”。

我希望有人可以解释正在发生的事情并提供解决方案,而不是仅仅给我一个修复,这样我才能更好地理解这一点。

干杯,卢克

4

1 回答 1

1

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

$sth->bindParam (':' . $value, [PARAM TYPE - example: PDO::PARAM_INT]);
于 2012-07-19T19:53:35.017 回答