首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP预准备语句失败

问PHP预准备语句失败
EN

Stack Overflow用户
提问于 2012-04-22 06:29:34
回答 2查看 115关注 0票数 0

我正在传递一个准备好的sql insert语句(使用占位符?,?)到mysql数据库中。然后,我使用->execute($array)并传入一个由值组成的数组。当有数据输入到表单的每个字段(数组是完整的)时,它工作得很好(即插入),但是如果只有一个元素没有完成,它就会完全失败。

对于较旧的mysql_query,如果缺少某个值,它就不会将该值插入数据库。

我们如何在准备好的语句中处理这个问题?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2012-04-22 06:43:23

他们处理它的方法是正确地确保你已经为你的查询输入了所有相关值。PDO ()可以像它想要的那样松散,因为归根结底,它只需要支持MySQL,但PDO是一个用于关系数据存储的通用接口,它不需要确保输入了所有数据。

票数 0
EN

Stack Overflow用户

发布于 2012-05-05 23:17:49

我看不到比较,因为mysql_query不带参数?

PDO对象要求您将元素绑定到参数。这是一条漫长的道路:

代码语言:javascript
复制
$stmt->bindParam(":namedParam", 1, PDO::PARAM_INT);

这是速记,所以在内部PDO仍然应该为自己做一些额外的工作来完成上面的工作:

代码语言:javascript
复制
$stmt->execute(array($value1, $value2, $etc));

如果您的查询类似于:

代码语言:javascript
复制
INSET INTO mytbl VALUES (?, ?, ?, ?, ?)

您的$data数组如下所示:

代码语言:javascript
复制
$data = array($val1, $val2, $val3);

您认为应该将这两个NULL值插入何处?

第一个和第三个??PDO怎么会知道?

此外,如果您确实知道这个问题的答案,您仍然可以用PHP处理它:

代码语言:javascript
复制
function queryMyTable($val1, $val2, $val3, $val4 = null, $val5 = null) {
    ...
    $stmt->execute(array($val1, $val2, $val3, $val4, $val5));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10263580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档