将数据库错误重新插入到数据库中
问题描述:
我试图做的是将所有查询错误都插入到数据库中,但它不起作用。我想这样做:将数据库错误重新插入到数据库中
<?php
include('db_settings.php');
$query = $conn->query("mysql_query here");
if (!query) {
$error = $conn->error;
$log_error = $conn->query("INSERT INTO tab (log) VALUES ('$error')");
}
?>
但是,这不起作用,错误没有被提交到数据库。 你们有没有人知道这个解决方法?
(有人问之前,DB和变量的所有参数都是正确的)。
答
你根本不应该那样做。
不要试图用非常即时失败的媒介!
让我们来看看你最近的一个问题:在这里困扰你的错误信息Mysqli Commands out of sync将会阻止你的wunderlogging正常工作!你的数据库不会被魔法同步!这样可以有效地防止你记录自己的错误。所以你根本不会有一个想法发生。
让错误为记录,然后你将能够找到他们。
在你的代码的顶部添加以下三行,
ini_set('log_errors',1);
error_reporting(E_ALL);
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
,然后检查服务器错误日志。
这是每个人都这样做的方式,没有理由设计出这样一个尴尬和不合逻辑的设备。
因为它似乎'$ query = $ conn-> query(“mysql_query here”);'正常运行,这就是为什么如果块条件变为假 –
你检查过自动提交是否启用?如果不是,使用提交也许可以解决 – Massimo
**警告**:使用'mysqli'时,您应该使用[参数化查询](http://php.net/manual/en/mysqli.quickstart.prepared-statements。 php)和['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)将用户数据添加到您的查询中。 **不要**使用字符串插值或连接来完成此操作,因为您创建了严重的[SQL注入漏洞](http://bobby-tables.com/)。 **绝不**将'$ _POST'或'$ _GET'数据直接放入查询中,如果有人试图利用您的错误,这会非常有害。 – tadman