我将准备好的sql insert语句(使用占位符?,?)传递到mysql数据库中。然后我使用 - >执行($ array)并传递一个值的单个数组。当表格的每个字段中输入数据(数组完成)时,它工作得很好(即插入),但是失败了如果只有一个元素没有完成,那么就完全没有了。
使用较旧的mysql_query,如果缺少值,则不会将该值插入数据库。
我们如何在准备好的陈述中处理这个问题?
谢谢!
答案 0 :(得分:0)
您处理它的方法是正确确保您已为查询输入所有相关值。 mysql_query()可以像它想要的那样松懈,因为在一天结束时,它只需要支持MySQL,但PDO是关系数据存储的通用接口,它不需要确保你已经输入所有你的数据。
答案 1 :(得分:0)
我没有看到比较,因为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
值?
第1&第3 ?
个? PDO应该如何知道?
此外,如果您确实知道该问题的答案,您仍然可以在PHP中处理它:
function queryMyTable($val1, $val2, $val3, $val4 = null, $val5 = null) {
...
$stmt->execute(array($val1, $val2, $val3, $val4, $val5));
}