【发布时间】:2012-12-05 20:33:32
【问题描述】:
我想将我的 PHP 创建的错误日志存储到 MySQL 表中,但没有插入任何内容。
我用于错误日志的代码是..
function myHandler($code, $msg, $file, $line)
{
echo "An error occurred while processing your request. Please visit our site and try again.";
// log error to file, with context
$logData = date("d-M-Y h:i:s", mktime()) . ", $code, $msg, $line, $file\n";
die("Error");
}
用线条
$insert = "INSERT INTO error_logs (error_message)"."VALUES ('$logData')";
mysql_query($insert)or die();
将日志插入到 error_logs 表中的 error_message 列中,该列设置为 VARCHAR,上限为 250 个字符
我以为它只是在那里设置了一个东西,但显然我离题了。
【问题讨论】:
-
没有。请不要在新应用程序中使用
mysql_query。您根本无法将任意文本内容放入查询中并期望它在没有proper SQL escaping 的情况下工作。为了您自己的健康和福祉,请使用PDO 处理您的数据库调用。 -
您是否收到错误消息?将
die()更改为die(mysql_error())。此外,您可能需要在(error_message)和VALUES之间留一个空格 -
@tadman 我想你的意思是说:Please, don't use
mysql_*functions in new code。它们不再维护,deprecation process 已开始使用。看到red box?改为了解prepared statements,并使用PDO 或MySQLi - this article 将帮助您决定哪个。如果您选择 PDO,here is a good tutorial。 ^_^ -
将日志推送到数据库中确实不会改善问题。如果您的数据库出现故障怎么办?如果缺少数据库是您的应用程序无法运行的唯一原因怎么办?记录到文件系统要容易得多。登录到专用的日志系统(参见“logstash”或“greylog 2”)更便于浏览。
-
@Sven 错误记录到数据库 >> 错误记录 错误记录到数据库 >> 错误记录 错误记录 错误记录到数据库 >> ... *死亡螺旋到堆栈溢出*