2016-04-24 48 views
0

我有一個奇怪的問題,在我的mysql發生在一個特定的表!MySQLi奇怪的行爲 - 顯示插入成功,但沒有記錄在表

我有一個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-> query(「INSERT_QUERY」)插入數據。最後我使用$ this-> mysql-> insert_id來查看插入是否有成功返回的id或不在...在執行插入操作時,我獲得了成功的自動遞增ID作爲輸出。但是,如果我通過PHPMyAdmin工具看到數據庫,數據庫是空的!即使在選擇查詢也沒有得到什麼......但如果我保持插入數據,我會得到自動遞增值的輸出!

更多在這一發生在一個表中。有很少的其他表在哪裏我做相同的插入操作,並確實正常工作!

所有表都在INNODB引擎上。

只是爲了測試我做刪除特定的表,但我仍然得到相同的自動遞增值與出錯的消息,該表不存在!但如果我更改數據庫名稱它會引發錯誤,確認連接指向同一個數據庫。

這真的很奇怪......有沒有人遇到過類似的問題?

+1

檢查您是否更改了連接的自動提交功能。也許在關閉連接後發生'回滾'。 – wajeeh

+0

嗨wajeeh,謝謝你的回覆。你能解釋一下嗎?我是否需要設置自動提交'ON'以使查詢正常工作?實際上,在我的程序中,3個插入操作發生在3個不同的表格上...其他2個表格數據看起來很好,只是在一個表格中表現出奇怪的表現! –

+0

在這種情況下,我不認爲這是問題,沒有查看代碼我們不能幫你,對不起。 – wajeeh

回答

1

檢查您是否更改了連接的自動提交功能。也許在關閉連接後發生了rollback

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