首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >准备语句返回false,普通查询返回true。

准备语句返回false,普通查询返回true。
EN

Stack Overflow用户
提问于 2014-08-07 07:00:24
回答 1查看 55关注 0票数 0

我要扯掉自己的头发,在过去的3个小时里,我一直在看这5行,但为了我的理智,我不能找出它的问题所在。

连接很好:

代码语言:javascript
复制
$db = new PDO('mysql:host='.$config['database']['host'].';dbname='.$config['database']['name'],$config['database']['username'],$config['database']['password']);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

然后我运行这个声明:

代码语言:javascript
复制
$product = $db->prepare('SELECT * FROM products JOIN suppliers ON products.supplier_id = suppliers.id WHERE products.partnumber=:partnumber');
$product -> execute( array( ':partnumber' => $_POST['partnumber'] ) );

$p = $product->fetchAll(PDO::FETCH_ASSOC);

如果我做了var_dump($p),它说bool(false)。但是,如果我在我的数据库中手动运行这个语句,它就会发现这个产品非常好。

在前面提到的语句之后,我运行以下命令:

代码语言:javascript
复制
$cu = current($db->query('SELECT currency_code FROM countries JOIN users ON users.country = countries.iso_alpha2 WHERE users.id="'.$_SESSION['userid'].'"')->fetch());

它运行得非常好,它按照我说的返回货币。

所以我的问题是。为什么我准备好的陈述不起作用?

编辑:

我尝试运行$db->errorInfo,它返回NULL

EN

回答 1

Stack Overflow用户

发布于 2014-08-07 07:07:19

所以我的问题是。为什么我准备好的陈述不起作用?

由于请求有很大的不同,所以没有必要对它们进行比较。

如果execute返回false,那么这意味着您在请求中出错了。例如,您拼错了一个表名。

要调试查询,最简单的方式将使用var_dump($db->errorInfo());

您还可以一步一步调试脚本,这要感谢XDebug。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25176074

复制
相关文章

相似问题

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