2016-04-24 10 views
0

私は特定のテーブルで起きている私のmysqlに奇妙な問題があります!MySQLiの奇妙な動作 - 挿入成功を示しているが、テーブルにレコードがありません

次のように私は...私は、コンストラクタに次を使用しますデシベルのアクションを必要とする私の他のクラスで

// 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(); 

とそのI以下$ this-> mysql-> query( "INSERT_QUERY")を使ってデータを挿入してください。最後には、$ this-> mysql-> insert_idを使って、挿入が成功したかどうかを確認します。挿入の実行では、成功した自動増分IDを出力として取得します。しかし、PHPがPHPMyAdminツールを介してDBを参照すると、dbは空です!選択クエリでさえ、私は何もしません...しかし、私はデータを挿入したままにすると、私はインクリメントされた値の出力を取得します!

これ以上のことは、ただ1つのテーブルで起こります。私は同じ挿入アクションを行い、正常に動作する他のテーブルはほとんどありません!

すべてのテーブルはINNODB Engineにあります。

私はその特定のテーブルを削除しますが、それでも私はテーブルが存在しないというエラーメッセージで同じ自動インクリメント値を持っています!しかし、私はdb名を変更すると、接続が同じDBを指していることを確認するエラーが表示されます。

これは本当に不思議です...誰も同様の問題に直面しましたか?

+1

接続から自動コミット機能を変更するかどうかを確認してください。多分あなたの接続を閉じた後、 'ロールバック 'が発生しました。 – wajeeh

+0

こんにちは、ご返信ありがとうございます。もう少し説明できますか?クエリを機能させるために自動コミット 'ON'を設定する必要がありますか?実際に私のプログラムでは3つの挿入アクションは3つの異なるテーブルで発生します...他の2つのテーブルのデータはうまくいくように見えるだけで、それは奇妙な動作です! –

+0

私はこれが問題だとは思わないが、コードを表示せずに、お手伝いできない、ごめんなさい。 – wajeeh

答えて

1

接続から自動コミット機能を変更するかどうかを確認してください。接続を終了した後におそらくrollbackが発生しました。

$this->mysql->autocommit(true); 
関連する問題