Php 在MySQL中存储错误日志
我想将PHP创建的错误日志存储到MySQL表中,但没有插入任何内容 我用于错误日志的代码是Php 在MySQL中存储错误日志,php,mysql,logging,Php,Mysql,Logging,我想将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 $lo
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个字符
我假设它只是在那里设置了一个东西,但显然我偏离了目标。您插入的语句可以解析为: 在错误日志(错误消息)中插入值('foo') 无效的 一定要把那个地方放进去 您可能希望将MySQL错误语句放入
die(…)
中,以便下次更好地看到错误
另外–请在将数据输入到语句之前,请将其转义。。。。你现在的做法可能会导致一些重大问题
。它们不再得到维护,并且已经开始使用。看到了吗?相反,学习,并使用,或-将帮助您决定哪一个。如果您选择PDO
否。请不要在新应用程序中使用
mysql\u query
。您不能简单地将任意文本内容抛到查询中,并期望它在没有文本的情况下工作。为了您自身的健康和福祉,请使用来处理您的数据库调用。是否收到错误?将die()
更改为die(mysql\u error())
。另外,您可能需要在(错误消息)
和值之间留出一个空格
@tadman我想您的意思是:。它们不再得到维护,并且已经开始使用。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO^_^将日志推入数据库实际上并不能改善情况。如果你的数据库坏了怎么办?如果缺少数据库是应用程序无法工作的唯一原因,该怎么办?登录到文件系统要容易得多。登录到专用的日志系统(请参阅“logstash”或“greylog 2”)更便于浏览。@Sven错误登录到数据库>>错误登录错误登录到数据库>>错误登录错误登录错误登录到数据库>>*死亡螺旋到堆栈溢出*逃脱它,否则它不是一个有效的答案。SQL注入并不酷。我打赌FarmerG会找到一种更好的方法通过php使用MySql语句,不管怎样@Neal的wright:FarmerG遗漏了一个空格。你应该在答案中使用占位符作为胡萝卜加大棒的方法来验证这个答案,或者使用通常的mysql\u real\u escape\u字符串
,这样这个答案至少不会对你的健康造成危害。从技术上讲,这是安全的,所以一定要投入生产。