Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP MySQL错误日志函数_Php_Mysql_Error Logging - Fatal编程技术网

PHP MySQL错误日志函数

PHP MySQL错误日志函数,php,mysql,error-logging,Php,Mysql,Error Logging,您对使用以下函数记录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; } ?> 你觉得

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


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

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


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

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

当然,如果您已经打开了数据库连接,并且不需要在此处打开它们,那么只要在第二个查询中的值周围有单引号,该函数就可以正常工作。另一方面,mysql\u错误日志是否不足?

应该是:

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())");

我添加了一个日期字段和经过消毒的输入。需要有一种方法来区分新旧错误,日期字段可以做到这一点。

我的网站不在我的服务器上,我使用phpMyAdminThen查看数据库。在这种情况下,请确保您正在清除其他人提到的输入,并在查询中用单引号将输入括起来。