2017-09-11 11 views
0

私はmysqlクエリの更新に問題があり、それはとても奇妙だと思います。私はクエリを自分のコードにWhereというクエリで実行します。しかし、私はクエリを停止すると、私のテーブル内のすべてのデータがNULLになり、これはデータに含まれているだけでなく、Where句がすべてのテーブルに含まれています。実行時にすべてのデータがNULLになるUpdate Query MySQL

これは私のコードです:

$book = json_decode($this->input->post('stringify')); 

foreach ($book as $row) 
{ 
    $data = array(
       'price' => $row->price, 
       'date_modified' => date("Y-m-d H:i:s"), 
       'modified_by' => $row->username 
      ); 

    $this->db->where('id', $row->id); 
    $this->db->where('book_id', $row->book_id); 
    $this->db->update('book_availability', $data); 
} 

私はCodeIgniterのフレームワークとそのクエリを作成します。私はちょうどそのクエリがWhere節のデータだけでなく、私のテーブルのすべてのデータを更新する理由を知りたい。たぶんサーバーはその問題を引き起こす可能性があります。誰かが私になぜそれが起こるかを示唆してくれることを願っていますありがとう。

+0

は '$ id'が定義されていますか? – Ghost

+0

完全なコードを見ることができないときは見えにくいですが、あなたにはありますか?id = something –

+0

echo $ this-> db-> last_query(); –

答えて

5

役立ちます:

foreach ($book as $row) 
{ 
    if(isset($row->id) && $row->id != '' && isset($row->book_id) && $row->book_id != '') { 
    $data = array(
       'price' => $row->price, 
       'date_modified' => date("Y-m-d H:i:s"), 
       'modified_by' => $row->username 
      ); 

    $this->db->where('id', $row->id); 
    $this->db->where('book_id', $row->book_id); 
    $this->db->update('book_availability', $data); 
    } 
} 

DBデータは、特定の変数の値がある場合にのみ更新されます。あなたの数値が(あなたのDB構造に従って)または無効である場合、あなたはIDをチェックするようなより多くの検証を使うことができます。

0

たぶん私が推薦する更新プログラムはどのように機能 への句は、WHERE句あなたを構築変数に代入して、更新にそれを与えることであるWHEREですから、あなたを渡すことができ、この

$this->db->update('mytable', $data, "id = 4"); 

を試してみてください第3のパラメータとして機能する。

希望、これはあなたがそれをデータベースに挿入する前にデータを検証するために、常に良いです条件

のために使用されている変数に関連付けられた値がない場合は、それを実現することができます

+0

前に自分のコードを使用していて、あなたのコードを使用した場合は違うのですか?私はこれを使用すればどんな利点がありますか? – Antonio

+0

@Antonio Hey man これは、データとWHERE句のテーブルを知っているように、3つのパラメータに基づいてレコードを更新することを100%確実にする方法です。あなたのWHERE句が間違っている可能性があります – Devaux

+0

私は3番目のパラメータで配列データを使用できますか? – Antonio

関連する問題