postgresql中的列未更新

时间:2017-06-30 12:10:34

标签: 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

我在代码中做错了什么。请就此向我提出建议。

提前致谢。

1 个答案:

答案 0 :(得分: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是数字,所以不需要使用单引号进行比较。