Php 将数据库错误插入回数据库

Php 将数据库错误插入回数据库,php,mysql,database,mysqli,Php,Mysql,Database,Mysqli,我试图做的是将所有查询错误插入数据库,但是,它不起作用。我想这样做: <?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')"); } ?>

我试图做的是将所有查询错误插入数据库,但是,它不起作用。我想这样做:

<?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')");
}
?>

你根本不应该那样做

不要试图使用一种在瞬间就让你失败的媒介

让我们来回答你最近的一个问题:这个让你困扰的错误消息将阻止你的日志功能您的数据库将无法通过magic恢复同步!这样可以有效地防止您记录自己的错误。所以你永远也不会知道它发生了

让错误被记录下来,然后你就能找到所有的错误

在代码顶部添加这三行

ini_set('log_errors',1);
error_reporting(E_ALL);
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
然后检查服务器错误日志


每个人都是这样做的,没有理由设计这样一个笨拙且不合逻辑的设备。

因为似乎
$query=$conn->query(“这里的mysql_query”)正常运行,这就是为什么如果块条件变为false,您是否已检查是否启用了自动提交?否则,使用提交可能会导致警告:当使用
mysqli
时,您应该使用and将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将
$\u POST
$\u GET
数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。@tadman我不使用这些。这是已定义的变量,用户对此没有更改的可能性,因为输入为0,但无论如何感谢您的建议。使用带有占位符值的准备语句。我不在乎这些价值观从何而来。什么都不相信,什么都逃避。这就是你、你的职业和你工作的任何公司的情况。我需要它们通过网页可读,我不能总是直接访问服务器来查看文件。。。我显然不能把我的根密码给每个应该有日志访问权限的人,所以基本上你说每个人都应该查看错误日志,暴露服务器的安全性。。。那没有道理。为什么我要把我的根密码给所有应该查看日志的“员工”呢?这不能满足我的要求,那是垃圾。同样,这不是你想要什么,而是你能做什么:如果你的服务器不在了,你不能在数据库中添加记录!更不用说你的反对也同样荒谬:你完全可以控制日志的存储位置。因此,如果我有5个人与我一起“工作”,他们的级别比我低,不应该访问网页之外的服务器,那么这到底是怎么回事?因为我不可能打开E_ALL on reporting并危及每个人的安全,如果我不在场时发生错误怎么办?每次我都必须通过root访问物理服务器并检查文件,这将导致麻烦。我就是这么想的mean@BlackSys你最好放松一下你的坏态度。如果人们看到你的错误中记录了密码,那么你的问题就严重得多。您用作演示的这个查询有一个巨大的问题,因为您没有正确编写SQL代码。使用带有占位符值的准备好的语句,您的错误将是完全无害的,除非您特意做些事情来打破它们。