从关于intertubes的教程中,我学到了一些关于PDO查询的知识。本教程使用try/catch和查询基本上是这样构造的:PDO错误处理
try {
$dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $user, $pass);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$stmt = $dbh->prepare("UPDATE users yada yada yadda");
$stmt->bindParam(':param1', $param1, PDO::PARAM_INT);
$stmt->bindParam(':param2', $param2, PDO::PARAM_INT);
$stmt->execute();
}
catch(PDOException $e)
{
echo $e->getMessage();
}
这当然回声mysql错误在屏幕上。并不是说我打算进行糟糕的查询,但我不喜欢在屏幕上回显错误的想法,弄清楚如果攻击者试图诱发所述错误并尝试向他们学习某些东西。
有没有更好的方法来做到这一点,以便任何错误转到日志文件,或者我真的没有什么可怕的,因为绑定参数消除了任何SQL注入的风险?
http://php.net/manual/en/function.error-log.php – CBroe 2013-05-07 08:38:45