gpt4 book ai didi

php query error sqlite near where 语法错误

转载 作者:可可西里 更新时间:2023-10-31 23:38:58 24 4
gpt4 key购买 nike

嗨,我是 sqlite 的新手,我正在尝试使用 php 对 sqlite 数据库执行查询,但是**靠近发生语法错误**的地方

这里是查询:

"
INSERT INTO selectedObject ( museum , atwork , beaconCode , qrCode)
VALUES ('".$museo."','" .$opera."','".$codiceBeacon."', '".$codice_qr_random."')
WHERE NOT EXISTS(
SELECT museum , atwork
FROM selectedObject
WHERE museum = '".$museo."' AND atwork = '".$opera."'

)";

怎么了?

最佳答案

Sqlite 支持复合主键,所以我从这 link 的手册中展示了这一点:

A CREATE TABLE command specifies the following attributes of the new table:

...

Optionally, a PRIMARY KEY for the table. Both single column and composite (multiple column) primary keys are supported.

根据您的唯一键,主键或其他键,复合键或其他键,您可以使用 OR IGNORE 的 sqlite 功能来忽略 duplicate clash 后跟更新语句.

所以它会变成:

INSERT OR IGNORE INTO selectedObject ( museum , atwork , beaconCode , qrCode)
VALUES ('".$museo."','" .$opera."','".$codiceBeacon."', '".$codice_qr_random."');

并且(可能)紧随其后的是 update 无论如何。

为什么我说不管?因为如果 INSERT 由于唯一键冲突而失败,它会默默地失败。但该失败可能是由于单列唯一索引或两列的组合,但您希望设置第 3 列和第 4 列。因此更新会将其全部清除并确保该行在那里。

我会留给您考虑您的用例和更新语句(如果需要)。

duplicate clash 意味着您已告知数据库强制执行唯一性,无论是单个列还是复合列(列的组合)。

关于php query error sqlite near where 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32506859/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com