gpt4 book ai didi

php - SQL 日志记录查询适用于 SELECT,但不适用于 INSERT 或 UPDATE

转载 作者:行者123 更新时间:2023-11-29 17:46:10 26 4
gpt4 key购买 nike

我编写了一个 PHP 函数来简化 SQL 查询的运行和记录。

它运行实际查询得很好,但我在日志记录部分遇到了问题。当 $query 的值为 SELECT 查询时,“INSERT INTO log...”命令起作用。

但是,如果查询是 INSERT 或 UPDATE 查询,它不会记录。

这是我的代码:

// generic query sql
function querySql($query){
global $conn;
$result = $conn->query($query);
if(!$result){
$error = $conn->error;
$log = $conn->query("INSERT INTO log(query,type,status,error) VALUES('$query','Query','Fail','$error')");
die($conn->error);
}
$log = $conn->query("INSERT INTO log(query,type,status) VALUES('$query','Query','Success')");
return $result;
}

有人可以建议一下吗?

最佳答案

可能您的 $query 包含单个代码导致 SQL 错误。尝试下面的方法

        $con = new PDO("mysql:host={Your Host};dbname={Your DB}",'{Your Username}','{Your Password}');
$statement1 = $con->prepare($query);
if(!$statement1->execute())
{
$query2 = "INSERT INTO log(query,type,status,error) VALUES(?,'Query','Fail',?)";
$statement2 = $con->prepare($query2);
$statement->execute(array($query,json_encode($statement1->errorInfo())));
die(json_encode($statement1->errorInfo()));
}
$query2 = "INSERT INTO log(query,type,status) VALUES(?,'Query','Success')";
$statement2 = $con->prepare($query2);
$statement2->execute(array($query));

您可以在w3schools上了解有关PDO的更多信息。

关于php - SQL 日志记录查询适用于 SELECT,但不适用于 INSERT 或 UPDATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49812594/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com