MySQLi奇怪的行为 - 显示插入成功但表中没有记录

时间:2016-04-24 15:43:45

标签: php mysqli

我的mysql中有一个奇怪的问题,它发生在特定的表格上!

我有一个DB类如下......

// Class: Database

class Database {

    private $_connection;
    private static $_instance; //The single instance
    private $_error = '';

    /*
        SingleTon function to return DB Instance.
    */

    public static function getInstance() {
        if(!self::$_instance) { // If no instance then make one
            self::$_instance = new self();
        }
        return self::$_instance;
    }

    // Constructor
    private function __construct() { 
        global $db_host;
        global $db_username;
        global $db_password;
        global $db_database;
        $this->_connection = new mysqli($db_host, $db_username, $db_password, $db_database);

        // Error handling
        if(mysqli_connect_error()) {
            $this->_error = "Failed to conencto to MySQL: " . mysql_connect_error();
        }
    }

    // Get mysqli connection
    public function getConnection() {
        return $this->_connection;
    }

}
?>

在我需要db动作的其他类中,我确实在构造函数上使用了以下...

 $db = Database::getInstance();
 $this->mysql = $db->getConnection();

然后我使用$ this-> mysql->查询(" INSERT_QUERY")来插入数据。最后,我使用$ this-> mysql-> insert_id来查看插入是否已成功返回id ...在我执行插入时,我会获得成功自动递增ID作为输出。但是,如果我通过PHPMyAdmin工具看到DB,那么db就是空的!即使在选择查询中我也什么也得不到......但如果我保留插入数据,我会得到自动递增值的输出!

更多关于这一点只在一张桌子上发生。我很少有其他表格可以执行相同的插入操作,并且正常工作!

所有表格都在INNODB Engine上。

只是为了测试我确实删除了那个特定的表但是我仍然得到了相同的自动递增值而没有表格不存在的错误信息!!!但是,如果我更改数据库名称,它会抛出错误,确认连接指向同一个数据库。

这真的很奇怪......有没有人遇到过类似的问题?

1 个答案:

答案 0 :(得分:1)

检查您是否更改了连接中的自动提交功能。可能在关闭连接后发生了rollback

$this->mysql->autocommit(true);