0

您对使用以下函数记录 mysql 错误有何想法?

<?php
function sql_query($query)
{
  $q = mysql_query($query);
  if(!$q)
  {
    mysql_query('INSERT INTO mysql_errors (error_query, error_about) VALUES ('.
    $query.', '.mysql_error().' )');
  }
  return $q;
}
?>

你觉得有用吗?如何改进?

4

4 回答 4

1

应该:

mysql_query("INSERT INTO mysql_errors (error_query, error_about, error_date) VALUES ('".
    mysql_real_escape_string($query)."', '".mysql_real_escape_string(mysql_error())."',NOW())");

我添加了一个日期字段并清理了输入。需要有一种方法来区分新旧错误,而日期字段可以做到这一点。

于 2012-11-19T22:14:25.840 回答
0

如果我找到了引发正确错误的方法,我可以使用它来执行 SQL 注入。

为什么不直接使用 MySQL 的原生错误日志呢?有什么理由把它们塞回数据库吗?

于 2010-12-01T16:17:59.853 回答
0

看起来您还没有清理输入,如果 $query 包含 '? 这将导致另一个 SQL 错误。

于 2010-12-01T16:18:24.130 回答
0

当然,前提是您已经打开了数据库连接并且不需要在此处打开它们,只要您在第二个查询中的值周围有单引号,该函数就会按预期工作。在相关说明中,mysql_error 日志是否不够?

于 2010-12-01T16:18:38.647 回答