我正在传递一个准备好的sql insert语句(使用占位符?,?)到mysql数据库中。然后,我使用->execute($array)并传入一个由值组成的数组。当有数据输入到表单的每个字段(数组是完整的)时,它工作得很好(即插入),但是如果只有一个元素没有完成,它就会完全失败。
对于较旧的mysql_query,如果缺少某个值,它就不会将该值插入数据库。
我们如何在准备好的语句中处理这个问题?
谢谢!
发布于 2012-04-22 06:43:23
他们处理它的方法是正确地确保你已经为你的查询输入了所有相关值。PDO ()可以像它想要的那样松散,因为归根结底,它只需要支持MySQL,但PDO是一个用于关系数据存储的通用接口,它不需要确保输入了所有数据。
发布于 2012-05-05 23:17:49
我看不到比较,因为mysql_query不带参数?
PDO对象要求您将元素绑定到参数。这是一条漫长的道路:
$stmt->bindParam(":namedParam", 1, PDO::PARAM_INT);这是速记,所以在内部PDO仍然应该为自己做一些额外的工作来完成上面的工作:
$stmt->execute(array($value1, $value2, $etc));如果您的查询类似于:
INSET INTO mytbl VALUES (?, ?, ?, ?, ?)您的$data数组如下所示:
$data = array($val1, $val2, $val3);您认为应该将这两个NULL值插入何处?
第一个和第三个??PDO怎么会知道?
此外,如果您确实知道这个问题的答案,您仍然可以用PHP处理它:
function queryMyTable($val1, $val2, $val3, $val4 = null, $val5 = null) {
...
$stmt->execute(array($val1, $val2, $val3, $val4, $val5));
}https://stackoverflow.com/questions/10263580
复制相似问题