我要扯掉自己的头发,在过去的3个小时里,我一直在看这5行,但为了我的理智,我不能找出它的问题所在。
连接很好:
$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);然后我运行这个声明:
$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)。但是,如果我在我的数据库中手动运行这个语句,它就会发现这个产品非常好。
在前面提到的语句之后,我运行以下命令:
$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
发布于 2014-08-07 07:07:19
所以我的问题是。为什么我准备好的陈述不起作用?
由于请求有很大的不同,所以没有必要对它们进行比较。
如果execute返回false,那么这意味着您在请求中出错了。例如,您拼错了一个表名。
要调试查询,最简单的方式将使用var_dump($db->errorInfo());。
您还可以一步一步调试脚本,这要感谢XDebug。
https://stackoverflow.com/questions/25176074
复制相似问题