我编写了一个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;
}
有人可以提出建议吗?
答案 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