mysql错误方法中没有错误重新运行



我有一个php/mysql数据库类,如下代码所示。当mysql查询中出现错误时,我无法从error方法中获得任何mysql错误。如果这里出了什么问题,请指引我。若我使用非oop方法来查询相同的东西,那个么我可以从中得到预期的错误。但这个班什么都没有。

class db {
protected static $connection;
var $hostname;
var $username;
var $password;
var $database;
public function __construct() {
$this->hostname = "localhost";
$this->username = "root";
$this->password = "";
$this->database = "my_db";
}
public function connect() {    
if(!isset(self::$connection)) {               
self::$connection = new mysqli($this->hostname,$this->username,$this->password,$this->database);
}
// If connection was not successful, handle the error
if(self::$connection === false) {
// Handle error - notify administrator, log to a file, show an error screen, etc.
return false;
}
self::$connection -> query("SET NAMES 'utf8'");
return self::$connection;
}

public function query($query) {
// Connect to the database
$connection = $this -> connect();
// Query the database
$result = $connection -> query($query);
return $result;
}
public function multi_query($query){
// Connect to the database
$connection = $this -> connect();
// Query the database
$result = $connection -> multi_query($query);
return $result;
}
public function insert($query) {
// Connect to the database
$connection = $this -> connect();
// Query the database
$connection -> query($query);
// Get inserted id
$insertid = $connection -> insert_id;
return $insertid;
}
public function select($query) {
$rows = array();
$result = $this -> query($query);
if($result === false) {
return false;
}
while ($row = $result -> fetch_assoc()) {
$rows[] = $row;
}
return $rows;
}
public function num_rows($query) {
$result = $this -> query($query);
if($result === false) {
$count = 0;
}
else $count = $result->num_rows;
return $count;
}
/**
* Fetch the last error from the database
* 
* @return string Database error message
*/
public function error() {
$connection = $this -> connect();
return $connection -> error;
}
/**
* Quote and escape value for use in a database query
*
* @param string $value The value to be quoted and escaped
* @return string The quoted and escaped string
*/
public function escape($value) {
$connection = $this -> connect();
return $connection -> real_escape_string(trim($value));
}
}

我预计这个方法会出错。但是当mysql查询出现错误时,我没有得到任何错误。

public function error() {
$connection = $this -> connect();
return $connection -> error;
}

下面的示例表有、id(自动增量(和其他三个字段VARCHAR(3(。如果我在php下运行,即使查询的各个部分中的列数明显不匹配,也不会出现错误详细信息。。。

<?php
include('class.db.php');
$query = "INSERT INTO abc_table (`a`,`b`,`c`) VALUES ('a','b','c','d')";
$insert_id = $db->insert($query);
if($insert_id>0){
echo "Insert Success !";
}
else echo "Insert Failed. ".$db->error();
?>

我可以通过将此添加到类文件中的error((方法来解决问题。

return self::$connection -> error;

所以,我的错误方法现在是

public function error() {
return self::$connection -> error;
}

尝试将此代码放在.htaccess文件上

php_flag display_startup_errors on
php_flag display_errors on

最新更新