我有这个密码:
$host = "127.0.0.1";
$db = "mydb";
$user = "user";
$pass = "pass";
$dbh = new PDO("pgsql:dbname=$db;host=$host", $user, $pass);
$query = "select * from mytable";
$stmt = $dbh->prepare($query);
if ($stmt) {
echo "Query was OK, execute!";
$stmt->execute();
var_dump($stmt->fetchAll());
} else {
echo "Query was NOT OK!";
var_dump($dbh->errorInfo());
}
但它总是说
查询正常,执行
即使SQL是公然错误的(例如
"bogus SQL"
或查询一个不存在的表)。它总是返回一个数据集,当查询错误时该数据集为空。我知道连接很好,因为有效的查询返回有效的结果。我在任何地方都没有看到任何错误,在日志中也没有。
最佳答案
根据documentation:
注:
模拟的准备语句不与数据库服务器通信,因此PDO::prepare()不检查该语句。
因此,您可以编写任何要准备的内容,只有在启用仿真时执行它才能检查其有效性。
您也不会检查execute()
的返回值以查看它是否成功,如果documentation没有结果,fetchAll()
将返回一个空数组。
关于php - PDO中的PostgreSQL永远不会出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44829738/