我只是将网站转换为PDO,这是我第一次接触它,但我很难从PDO获取任何有用的错误信息。我已经阅读了很多关于这个主题的其他帖子,但它们似乎都没有提供适合我的解决方案。
以下是代码:
try {
$dbh = new PDO("mysql:host=".CO_DB_HOST.";dbname=".CO_DB_NAME, CO_DB_UNAME, CO_DB_PWORD);
$dbh ->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
}
catch(PDOException $e) {
echo $e->getMessage();
}
function addRec($data) {
global $part_id, $dbh;
$part_id++;
try {
$sth=$dbh->prepare("
INSERT INTO
non_existent_table
(
name
) VALUES (
?
);
");
for ($i = 0; $i < count($data); $i++) {
$sth->execute($data[$i]);
}
}
catch(PDOException $e) {
echo "Something went wrong. Please report this error.";
file_put_contents('/PDOErrors.txt', PDOStatement::errorInfo(), FILE_APPEND);
}
}
// Insert a database record
$data = array(
array(
'joe blogs', /* name */
)
);
addRec($data);
该表不存在,但我在PDOError.txt中没有出错,在httpd错误日志中没有任何错误。有人可以解释一下我做错了吗?感谢。
答案 0 :(得分:2)
errorInfo()
不是静态方法。此外,它返回一个数组,而不是一个字符串。
你应该对异常中的信息没问题。使用类似的东西
file_put_contents('/PDOErrors.txt', $e->getMessage(), FILE_APPEND);
如需了解更多信息,您还可以附加stacktrace。
修改强>
您确定/PDOErrors.txt
是错误日志的正确文件路径吗?那是在文件系统根目录中,我怀疑你想要什么,甚至可能。