我将准备好的SQL插入语句(使用占位符?,?)传递给mysql数据库。然后,我使用 - > execute($ array)并传入一个值的单个数组。当数据输入到表单的每个字段(数组已完成)时它工作得很好(即插入),但是完全失败如果只有一个元素没有完成。PHP编写的声明失败
使用旧的mysql_query,如果缺少一个值,它将不会将该值插入到数据库中。
我们如何处理准备好的陈述?
谢谢!
我将准备好的SQL插入语句(使用占位符?,?)传递给mysql数据库。然后,我使用 - > execute($ array)并传入一个值的单个数组。当数据输入到表单的每个字段(数组已完成)时它工作得很好(即插入),但是完全失败如果只有一个元素没有完成。PHP编写的声明失败
使用旧的mysql_query,如果缺少一个值,它将不会将该值插入到数据库中。
我们如何处理准备好的陈述?
谢谢!
他们处理这个问题的方式是正确地确保您输入了查询的所有相关值。因为在一天结束时,mysql_query()只能支持MySQL,但是PDO是关系数据存储的通用接口,并且它不需要确保输入全部信息你的数据。
我看不到比较,因为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
值在哪里?
1st & 3rd ?
's? PDO应该如何知道这一点?
此外,如果你知道这个问题的答案,你仍然可以处理它在PHP:
function queryMyTable($val1, $val2, $val3, $val4 = null, $val5 = null) {
...
$stmt->execute(array($val1, $val2, $val3, $val4, $val5));
}
如果你根本没有正确的错误处理的错误根本无视/沉默的错误之前,它的工作。 – ThiefMaster 2012-04-21 22:32:33
如果你没有提供PDO/mysqli不能奇迹般地产生数据。相关的数据库字段是否为“非空”或什么的? – 2012-04-21 22:32:46