2017-04-06 16 views
1

私はCodeigniter 3、PHP、MySQLを使用しています。Codeigniter Select(条件付き)更新クエリ

私は、MySQLデータベースからレコードを選択しようとしており、結果に応じて更新クエリを実行しています。

If result = 0, update. 
If result = 1, do nothing. 

これまでのコードは、

public function addData($itemId) { 
    $gDescription = 'test'; 
    $gPreviewLink = 'test'; 
    $gThumbnail = 'test'; 
    $gPageCount = 'test'; 

    $this->db->select('g_data'); 
    $this->db->from('item'); 
    $this->db->where('item_id', $itemId); 
    $query = $this->db->get(); 
    $result = $query->result(); 
    // var_dump($result) returns array(1) { [0]=> object(stdClass)#22 (1) { ["g_data"]=> string(1) "0" } } 

     $data = array(
     'item_description' => $gDescription, 
     'item_preview_link' => $gPreviewLink, 
     'item_thumbnail' => $gThumbnail, 
     'item_pageCount' => $gPageCount, 
     'g_data'   => '1', 
     'g_data_timestamp' => 'NOW()' 
     ); 
     // if result = 0 update 
     if($result == '0') { 
     $this->db->where('item_id',$itemId); 
     $this->db->update('item', $data); 
    } 
     } 

データがデータベースで更新されない理由はありますか?エラーメッセージは表示されません。

ご協力いただければ幸いです。

+0

実際にここに質問はありません... –

+0

は$結果の数値または文字ですか?上の例は数字を示していますが、あなたは==を文字 '0' – xQbert

答えて

1

$query->result()は、各オブジェクトがテーブルの行であるオブジェクトの配列を返します。他なし

(あなたのコメントでのvar_dumpで見ることができるように)あなたの条件を変更すると、以前のデータベースがatually結果を返さ方法でチェックしているはず、と述べ

if($result->g_data == '0') { ... 

でなければなりません。また、あなたはとてもresult()使用使用していない複数の行を必要としない「(行)」の代わり

... 
$query = $this->db->get(); 
// The following will set $result to the value of "g_data" if there 
// are rows and to "0" if there are none. 
$result = $query->num_rows() > 0 ? $query->row()->g_data: '0'; 
... 

あなたが上記の操作を行う場合は、それが

if($result == '0') {... 
をコード化されていて、その後、条件が残っていることができます