【问题标题】:PHP MySQL Error Log FunctionPHP MySQL 错误日志功能
【发布时间】:2010-12-01 16:14:40
【问题描述】:

您对使用以下函数记录 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;
}
?>

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

【问题讨论】:

    标签: php mysql error-logging


    【解决方案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())");
    

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        您似乎没有清理输入,如果 $query 包含 '?这会导致另一个 SQL 错误。

        【讨论】:

          【解决方案4】:

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

          【讨论】:

          • 我的网站不在我的服务器上,我使用 phpMyAdmin 查看数据库
          • 那么在这种情况下,请确保您像其他人提到的那样清理您的输入,并在查询中将输入用单引号括起来。
          猜你喜欢
          • 1970-01-01
          • 2018-03-23
          • 2010-12-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-07-05
          • 1970-01-01
          • 2012-11-26
          相关资源
          最近更新 更多