我非常困惑。我试图使用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'
答案 0 :(得分:6)
您需要选择一个数据库,即:dbname=your_db
,它不会出现在您的连接代码中。
例如:
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
根据手册:
另外,添加:
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
在打开连接之后,因为它会检查错误,这是编码时的重要工具。
旁注:错误报告应仅在暂存时完成,而不是生产。