0
以下代码:插入或替换WHERE ROWID导致错误
$stm = $sql->prepare('INSERT OR REPLACE INTO "vehicle_service_invoice" (
invoice, "date", unit, odometer, sublet, sub, po, categories
) VALUES (
:invoice, :date, :unit, :odometer, :sublet, :sub, :po, :categories
) WHERE rowid = :rowid;'
);
$stm->bindParam(':invoice', $_POST['invoice']);
$stm->bindParam(':date', $_POST['date']);
$stm->bindParam(':unit', $_POST['unit']);
$stm->bindParam(':odometer', $_POST['odometer']);
$stm->bindParam(':sublet', $_POST['sublet']);
$stm->bindParam(':sub', $_POST['sub']);
$stm->bindParam(':po', $_POST['po']);
$stm->bindParam(':categories', $categories);
$stm->bindParam(':rowid', $_POST['rowid']);
$stm->execute();
可生产以下查询:
INSERT OR REPLACE INTO "vehicle_service_invoice" (
invoice,
"date",
unit,
odometer,
sublet,
sub,
po,
categories
) VALUES (
7230,
'2013-02-07',
558,
34863,
0,
0,
1486347,
5
) WHERE rowid = 1
即产生以下错误:
ERROR: near "WHERE": syntax error.
我想要做的是为我的INSERT
和UPDATE
逻辑做一个单一的路径,所以当我发现我可以做INSERT OR REPLACE
时,我想我可以更新基于每个项目的ROWID
的信息。对我来说,语法看起来正确,我做错了什么?
应该指出,我不在乎改变ROWID
值,据我所知,这是做INSERT OR REPLACE
陈述的跳闸点。在基于INVOICE
列的其他查询中,所有内容都将结合在一起。我只想使用ROWID来引用该行。