我完全感到困惑.我试图使用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);
在连接打开后,它会检查错误,这是编码时的重要工具.
旁注:错误报告应该只在暂存中完成,而不是生产.