如果出现连接错误,我想在表“logs”中输入一条记录,那么我该怎么做?
日志表结构是
create table logs(
id int(20) AUTO_INCREMENT primary key,
class_name varchar(20),
function_name varchar(20),
error varchar(200),
error_date datetime));
这是我的database.php
<?php
class Database{
public $server = "localhost";
public $user = "root";
public $password = "";
public $table_name = "";
public $database_name = "todo_application";
public $class_name = "Database";
public $function_name = "";
public $database_connection = "";
//Constructor
public function __construct(){
//establishes database connection
$this->database_connection = new mysqli($this->server,
$this->user,
$this->password,
$this->database_name);
if($this->database_connection->connect_error)
die("connection failed".$this->database_connection->connect_error);
}
//Destructor
public function __destruct(){
//Terminates the database connection
$this->database_connection->close();
}
//Function to run the database query.
//Input : Database query.
//Output : Returns array of the result.
public function run_query($sql_query){
$this->function_name = "run_query";
try{
if(!$this->database_connection){
$output = $this->database_connection->query($sql_query);
if($output){
$result["status"] = 1;
$result["array"] = $output;
}
else{
$result["status"] = 0;
$result["message"] = "Query error";
}
}
else{
throw new Exception ("Connection error");
}
}
catch(Exception $error){
$result["status"] = 0;
$result["message"] = $error->getMessage();
$this->error_table($this->class_name, $this->function_name, "Connection error", date('Y-m-d H:i:s'));
}
return $result;
}
//Function to insert a error in the table
//Input : class name, function name , error & date.
public function error_table($class_name, $function_name, $error_message, $date){
$sql_query = "insert into `logs`( `class_name`, `function_name`, `error`, `error_date`) VALUES ('$class_name', '$function_name', '$error_message', '$date')";
$this->database_connection->query($sql_query) ;
}
?>
Calling.php
<?php
include "database.php";
$connection = new Database();
$sql_query = "select * from some_tablename";
$output = $connection->run_query($sql_query);
?>
任何人都可以指出我错在哪里,并指导我找到解决方案吗? 提前谢谢。
答案 0 :(得分:0)
如果您打算在相同的 MySQL实例中记录您无法连接的错误,那么答案是:您可能 这样做。
当您的应用程序无法连接到数据库时,它将无法在其中保存错误消息。
您可以做的是尝试再次连接几次(希望连接错误随后消失),但无法保证您可以建立连接。所以依靠它是不安全的。
替代方法是使用另一个数据库实例来记录问题,将错误记录到文本文件中,发送电子邮件,或者只使用PHP的error_log函数来记录错误。
答案 1 :(得分:0)
你可以使用类似
的内容<?
$connlog = new mysqli(connection for logs)
$connection = new mysqli(database connection)
if($connection->connect_error) {
//insert to $connlog
?>