php – SQL字符串正确但fetchAll为空

我完全感到困惑.我试图使用PHP / PDO在我的Web应用程序中执行sql语句.以下是我的代码

$dbServer = DBSERVER;
$dbh = new \PDO('MysqL:host=' . $myDBServer . ";port=3306", 'nameofserver', 'password', array(\PDO::ATTR_PERSISTENT => false));
$stmt = $dbh->prepare($sqlString);
$stmt->execute();
$result = $stmt->fetchAll(\PDO::FETCH_ASSOC);

我的结果总是一个空数组,即使我知道结果集中应该有结果.为了调试,我已将$sqlString剪切并粘贴到MysqL Workbench中,并始终为我提供正确的结果集.所以,我知道$sqlString是合法的.

以下是我的$sqlString:

SELECT * FROM table1 t1 join table2 t2 ON t1.column1 = t2.column2 where t1.endDate is NULL AND t2.column3='2'

解决方法:

您需要选择一个DB,即:dbname = your_db,它不在您的连接代码中.

例如:

$dbh = new PDO('MysqL:host=localhost;dbname=test', $user, $pass);

根据手册:

> http://php.net/manual/en/pdo.connections.php

另外,添加

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

在连接打开后,它会检查错误,这是编码时的重要工具.

旁注:错误报告应该只在暂存中完成,而不是生产.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...