我要撕掉自己的头发,过去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
答案 0 :(得分:0)
所以,我的问题。为什么我准备好的陈述不起作用?
由于请求完全不同,没有必要比较它们。
如果execute
返回false,则表示您在请求中出错。例如,您拼错了表名。
要调试您的查询,simplest way将使用var_dump($db->errorInfo());
。
由于XDebug,您还可以尝试逐步调试脚本。