MYSQL,多表更新

时间:2015-01-26 12:01:27

标签: php mysql

我有一个更新6个表中的值的查询

6个表格的格式相同,格式为

ID   Ref       Date
21    1     26/01/2015
22    2     26/01/2015
23    3     26/01/2015

还有一张表格,其中包含一系列具有类似

结构的车辆
ID   Name       
1    name     
2    name     
3    name    

因此,需要更新的6个表中的Ref列对应于车辆名称的ID。

这是我目前的查询,

UPDATE transport_tax, transport_tachocalibration, transport_service, transport_rbt, transport_mot, transport_ivc
        SET transport_tax.Date = '$tax',
        transport_tachocalibration.Date = '$tacho',
        transport_service.Date = '$service',
        transport_rbt.Date = '$rbt',
        transport_mot.Date = '$mot',
        transport_ivc.Date = '$ivc',
        WHERE 
        transport_tax.Ref = '$id' AND
        transport_tachocalibration.Ref = '$id' AND
        transport_service.Ref = '$id' AND
        transport_rbt.Ref = '$id' AND
        transport_mot.Ref = '$id' AND
        transport_ivc.Ref = '$id'

在PHP中查询这就是为什么有变量的原因,要更新的6个值都等于1/1/2015,$ id等于1。 目前,当运行此查询时,我收到此错误

Warning: PDOStatement::execute(): SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE transport_tax.Ref = '1' AND transport_tachocalibr' at line 8 in C:\wamp\www\application\models\Transport_model.php on line 76

非常感谢任何帮助,

2 个答案:

答案 0 :(得分:1)

删除WHERE

之前的逗号
transport_ivc.Date = '$ivc', WHERE
            here-----------^

答案 1 :(得分:0)

首先,如果您在严格模式下运行数据库,请删除WHERE之前的行中的逗号,并使查询类型安全。如果您有整数或一般数字值,则不应添加刻度,例如: G:

transport_tax.Ref = $id AND
...