SQL字符串正确但fetchAll为空

whi*_*ler 3 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);
Run Code Online (Sandbox Code Playgroud)

我的结果总是一个空数组,即使我知道结果集中应该有结果.为了调试,我已将$ 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'
Run Code Online (Sandbox Code Playgroud)

Fun*_*ner 6

您需要选择一个数据库,即:dbname=your_db连接代码中不存在的数据库.

例如:

$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
Run Code Online (Sandbox Code Playgroud)

根据手册:

另外,添加:

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Run Code Online (Sandbox Code Playgroud)

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

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