检查语句错误pdo

时间:2013-12-23 19:30:42

标签: php pdo error-handling

我正在使用此构造来检查错误为何未执行语句:

$value1 = $username;
$value2 = $firstname;
$value3 = $lastname;

$sql = "INSERT INTO table (row1, row2, row3) VALUES (?, ? , ?)";

try {
    $stmt = $dbh->prepare($sql);

    $stmt->bindParam(1, $value1);
    $stmt->bindParam(2, $value2);
    $stmt->bindParam(3, $value3);

    $stmt->execute();
} catch(PDOException $e) {
    $var .= $e->getMessage();
}

include 'log.php';

log.php:

$logfile = fopen("logfile.txt", "a"); 
$error = date("d.m.Y H:i:s")." - ".$var.".\r\n"; 
fwrite($logfile, $error); 
fclose($logfile);  

我的数据库中没有插入,我的log.php也是空的,所以我不能保存错误,任何人都可以帮助我?问候

1 个答案:

答案 0 :(得分:-1)

我不知道为什么PDO错误会引起PHP用户如此明显的关注。你永远不会看到这么多的包含或图像处理。但由于某种原因,PDO声明总是得到特殊处理。

虽然PDO错误绝对没有什么特别之处。这与任何其他错误完全相同,并且无需采用任何特殊方式处理PDO错误。如果找不到文件 - PHP将记录该错误。如果PDO查询失败 - PHP也会记录该错误。告诉PHP这样做。

ini_set('log_errors', 1);

就是你所需要的。然后运行您的代码并记录错误

$sql = "INSERT INTO table (row1, row2, row3) VALUES (?, ? , ?)";
$stmt = $dbh->prepare($sql);
$stmt->execute(array($username, $firstname, $lastname));