2017-06-30 53 views
0

更新我嘗試更新我的表像下面:列不在PostgreSQL的

  $query = "select * 
        FROM sites s, companies c, tests t 
        WHERE t.test_siteid = s.site_id 
        AND c.company_id = s.site_companyid 
        AND t.test_typeid = '20' AND s.site_id = '1337'"; 

      $queryrow = $db->query($query); 
      $results = $queryrow->as_array(); 

      foreach($results as $key=>$val){ 
        $update = "update tests set test_typeid = ? , test_testtype = ? where test_siteid = ?"; 
        $queryrow = $db->query($update,array('10','Meter Calibration Semi Annual',$val->site_id)); 
      } 

上面的代碼工作良好。但是在更新查詢中,列test_typeid不會更新爲'10'。列test_typeid正在更新爲空值。其他專欄更新良好。我不知道爲什麼這個列test_typeid沒有更新?並且列test_typeid類型僅爲整數。我使用PostgreSQL的

和我的表定義是:

enter image description here

我做錯了什麼的代碼。請在此建議我。

在此先感謝。

+0

請向我們展示'測試'表的定義 –

+0

@Meiko我附上我桌子的定義。請參閱 –

+0

嘗試$ queryrow = $ db-> query($ update,array(10,'Meter Calibration Semi Annual',$ val-> site_id)); –

回答

0

首先,學會使用正確的JOIN語法。 從不FROM條款中使用逗號;始終使用正確的顯式JOIN語法。

您可以在一條語句編寫查詢:

update tests t 
    set test_typeid = '10', 
     test_testtype = 'Meter Calibration Semi Annual' 
from sites s join 
    companies c 
    on c.company_id = s.site_companyid 
where t.test_siteid = s.site_id and 
     t.test_typeid = 20 and s.site_id = 1337; 

我假設的ID是數字,所以沒有必要使用單引號的比較。

+0

我已經嘗試過**已經**正確加入的查詢。無論如何,它不工作。所以我只是寫了查詢儘可能簡單。你和我的是一樣的。在連接中沒有問題。我需要一個不更新列的解決方案。該列是整數但不更新。我也刪除了報價,並嘗試過。它仍然不工作。 –