Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果存在连接错误,如何在表中插入行?_Php_Mysql_Insert_Database Connection - Fatal编程技术网

Php 如果存在连接错误,如何在表中插入行?

Php 如果存在连接错误,如何在表中插入行?,php,mysql,insert,database-connection,Php,Mysql,Insert,Database Connection,如果存在连接错误,我想在表“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

如果存在连接错误,我想在表“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) ;
    }
 ?>

如果您打算在无法连接的同一个MySQL实例中记录错误,那么答案是:您可能不能这样做

当应用程序无法连接到数据库时,它将无法在其中保存错误消息

你可以做的是尝试再次连接几次(希望连接错误会消失),但不能保证你能建立连接。因此,依靠它是不安全的

替代方法是使用另一个数据库实例记录问题、将错误记录到文本文件中、发送电子邮件,或者简单地使用PHP函数记录错误

<?
$connlog = new mysqli(connection for logs)
$connection = new mysqli(database connection)
if($connection->connect_error) {
    //insert to $connlog
?>

如果出现mysql连接错误,如何执行操作?
<?
$connlog = new mysqli(connection for logs)
$connection = new mysqli(database connection)
if($connection->connect_error) {
    //insert to $connlog
?>