SQL日志记录查询与SELECT一起使用但不与INSERT或UPDATE一起使用

时间:2018-04-13 08:32:15

标签: php mysql

我编写了一个PHP函数,可以更轻松地运行和记录SQL查询。

它运行实际查询就好了,但我在记录部分遇到问题。 " INSERT INTO log ..."当$ query的值是SELECT查询时,命令有效。

但是,如果查询是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;
    }  

有人可以提出建议吗?

1 个答案:

答案 0 :(得分:0)

保证包含单个代码的$查询导致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