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


MySQLi weird behaviour - Showing Insertion success but no records in table

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

我有一个数据库类,如下所示...

// 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 = Database::getInstance();
 $this->mysql = $db->getConnection();

之后,我使用 $this->mysql->query("INSERT_QUERY") 插入数据。最后我使用 $this->mysql->insert_id 来查看插入是否成功返回了 id......在我执行插入时,我确实获得了成功的自动递增 ID 作为输出。但是如果我通过 PHPMyAdmin 工具看到数据库,数据库是空的!即使在选择查询中,我也一无所获...但是如果我保留插入数据,我确实会得到自动递增值的输出!

更多关于这种情况只发生在一个表中。很少有其他表可以执行相同的插入操作,并且可以正常工作!

所有表都在INNODB引擎上。

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

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

检查是否从连接更改自动提交功能。 也许在关闭连接后发生了rollback

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