我尝试更新我的表格如下:
$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
我的表定义是:
我在代码中做错了什么。请就此向我提出建议。
提前致谢。
答案 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是数字,所以不需要使用单引号进行比较。