PHP MySQL错误日志函数
您对使用以下函数记录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; } ?> 你觉得
<?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查看数据库。在这种情况下,请确保您正在清除其他人提到的输入,并在查询中用单引号将输入括起来。