SQL字符串正确但fetchAll为空

时间:2014-10-21 00:18:14

标签: php mysql pdo

我非常困惑。我试图使用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'

1 个答案:

答案 0 :(得分:6)

您需要选择一个数据库,即:dbname=your_db,它不会出现在您的连接代码中。

例如:

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

根据手册:

另外,添加:

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

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

旁注:错误报告应仅在暂存时完成,而不是生产。