Php 如果值不';不存在

Php 如果值不';不存在,php,mysql,Php,Mysql,我一直在为这件事发狂。我必须连接三个表,但只有当这三列没有现有值时,我才需要插入数据库。我尝试了重复密钥更新的,不存在的地方,最后我尝试插入忽略,最后一个是不存在的结果,即使存在相同的值,其他人也会插入 我正在努力 insert into TABLE name: set_colors (school_art_id, baseimage_id, sub_folder, layer) school\u art\u id来自另一个名为school\u art baseimage\u id是名为bas

我一直在为这件事发狂。我必须连接三个表,但只有当这三列没有现有值时,我才需要插入数据库。我尝试了重复密钥更新的
不存在的地方
,最后我尝试
插入忽略
,最后一个是不存在的结果,即使存在相同的值,其他人也会插入

我正在努力

insert into TABLE name: set_colors (school_art_id, baseimage_id, sub_folder, layer)
school\u art\u id
来自另一个名为
school\u art
baseimage\u id
是名为
baseimage
sub_folder
baseimage.sub_folder
layer是来自
baseimage.layer的值

这是不起作用的查询

INSERT IGNORE INTO set_colors (school_art_id, baseimage_id, sub_folder, layer)
SELECT 'school_art.id', 'baseimage.id', 'baseimage.sub_folder', 'baseimage.layer' 
SET school_art_id='school_art.id', 
baseimage_id='baseimage.id', 
sub_folder='baseimage.sub_folder', 
layer=baseimage.layer
有人能告诉我我做错了什么吗

 INSERT IGNORE 
应该是

 INSERT IGNORE INTO

但是,在SELECT或INSERT INTO查询中不可能使用
SET
您的查询语法对于SELECT部分已完全中断。您正在选择一系列常量字符串,然后出于某种原因进入“SET”并执行一些赋值。这毫无意义,因为您没有在select中设置值

您的查询应该类似于

INSERT IGNORE INTO set_colors (school_art_id, baseimage_id, sub_folder, layer)
SELECT field1, field2, field3, field4
FROM some_other_table
WHERE ...

我找到了解决方案,以防其他人遇到同样的问题(我把它放在一个类中,这样在调用该类时,{$value}就被传入了)

INSERT IGNORE INTO set_colors (school_art_id, baseimage_id, sub_folder, layer)
SELECT school_art.id, baseimage.id, baseimage.sub_folder, baseimage.layer
FROM school_art 
JOIN baseimage ON baseimage.base_folder = school_art.series_code 
WHERE baseimage.image_type = 'B' AND school_art.id = '{$value}' ORDER BY school_art.id"

谢谢你们,我都很兴奋,但它仍然不起作用,还有其他想法吗?了解语句应该是什么样子。实际上,可以在SELECT{fields}集合的形式中使用SET和INSERT INTONT…它不是。