2015-12-07 27 views
-1

我正在循環新鮮的數組和我的數據庫數組。我想比較價格和特定ID和日期的可用性。這就是我的了:如何知道傳入數組是否與數據庫中現有數組的值不同?

  foreach ($this->super_unique($data) as $day_info) { 

       $data_listing = Array(
        'list_id' => $airbnb_id, 
        'list_price' => $day_info['price']['local_price'], 
        'list_currency' => $day_info['price']['local_currency'], 
        'list_date' => $day_info['date'], 
        'list_available' => $this->check_list_available((int)$day_info['available']) 
       ); 
       $listings[] = $data_listing; 
      } 


      if ($this->Reservations_model->existing_prices(@$listings[0]['list_id']) > 0) { 
       foreach ($listings as $list_result) { 
        if ($this->db->where("(list_id = '{$list_result['list_id']}' and list_date = '{$list_result['list_date']}' and list_price NOT = '{$list_result['list_price']}' or list_available NOT = '{$list_result['list_available']}')")) { 
         $this->db->where("(list_id = '{$list_result['list_id']}' and list_date = '{$list_result['list_date']}')"); 
         $this->db->update('airbnb_lists_price', $list_result['list_available']); 
         $this->db->update('airbnb_lists_price', $list_result['list_price']); 
        } 
       } 
       echo 'Prices or avilablity change so we need to update'; 
      } else { 
       $this->db->insert_batch('airbnb_lists_price', $listings); 
       echo 'Prices not changed all good'; 
      } 

     } 

讓我

你在你的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的 'NOT = '70' 或list_availableNOT = 'FALSE')AND(list_id = '215583' 和' 第2行

UPDATE `airbnb_lists_price` SET `FALSE` = '' WHERE (`list_id` = '215583' and `list_date` = '2015-11-29' and `list_price` `NOT` = '70' or `list_available` `NOT` = 'FALSE') AND (`list_id` = '215583' and `list_date` = '2015-11-29')` 
正確的語法手冊?

我在做什麼錯

+0

'NOT ='不是一個適當的比較。看看[mysqls非類型運算符](https://dev.mysql.com/doc/refman/5.1/en/non-typed-operators.html) – Ohgodwhy

回答

2

你沒有正確地執行你的比較使用NOT不當這裏:

`list_price` `NOT` = '70' or `list_available` `NOT` = 'FALSE' 

你可以使用未等於運營商之一兩種方式:

`list_price` != '70' or `list_available` != 'FALSE' 

OR

`list_price` <> '70' or `list_available` <> 'FALSE' 

此外,NOT是一個reserved word in MySQL,你應該避免在一般使用這些詞。例如,你在發言的這部分使用的FALSE

UPDATE `airbnb_lists_price` SET `FALSE` = '' 

爲列名可能是有問題的。

+0

我已修復此問題..但此行不正確檢查.. if($ this-> db-> where(「(list_id ='{$ list_result ['list_id']}'and list_date ='{$ list_result ['list_date']}'and list_price!='{$ list_result ['list_price']}'或list_available!='{$ list_result ['list_available']}')「)){ –

+1

請不要在註釋中轉儲代碼。 –

+1

此外,請不要在您的代碼中使用'@'來抑制錯誤警告,例如:'existing_prices(@ $ listings [0] ['list_id'])> 0)' – Ohgodwhy

相關問題