Php mysql插入值选择不存在
如何在Php mysql插入值选择不存在,php,mysql,select,insert,mysqli,Php,Mysql,Select,Insert,Mysqli,如何在循环中插入? 我得到了sql错误代码1093,它是数组结果: INSERT INTO kelengkapan_berkas (id_buyer, nama_berkas) VALUES ('1', (SELECT jenis_berkas.nama_berkas FROM jenis_berkas WHERE id_job = '1' AND NOT EXISTS (SELECT id_buyer FROM kelengkapan_berkas WHERE id_buyer = '1')
循环中插入?
我得到了sql错误代码1093
,它是数组结果:
INSERT INTO kelengkapan_berkas (id_buyer, nama_berkas) VALUES
('1', (SELECT jenis_berkas.nama_berkas FROM jenis_berkas WHERE id_job = '1' AND NOT EXISTS (SELECT id_buyer FROM kelengkapan_berkas WHERE id_buyer = '1'))),
('2', (SELECT jenis_berkas.nama_berkas FROM jenis_berkas WHERE id_job = '1' AND NOT EXISTS (SELECT id_buyer FROM kelengkapan_berkas WHERE id_buyer = '2'))),
('3', (SELECT jenis_berkas.nama_berkas FROM jenis_berkas WHERE id_job = '1' AND NOT EXISTS (SELECT id_buyer FROM kelengkapan_berkas WHERE id_buyer = '3')))
我的循环代码可以工作,但我需要避免,因为连接风暴XD:
while($rows=mysqli_fetch_array($res)){
$sql="INSERT INTO kelengkapan_berkas
(id_buyer, nama_berkas)
SELECT '$rows[id]',
jenis_berkas.nama_berkas
FROM jenis_berkas
WHERE id_job = '$rows[job]' AND NOT EXISTS
(SELECT * FROM kelengkapan_berkas WHERE id_buyer = '$rows[id]')";
$result=mysqli_query($con,$sql);}
或者用触发器或程序来实现这一点?
thx表设计
使ID买家成为唯一的索引,并在代码中捕获异常
那么您只能添加id_buyer=1一次
如果你真的不想失败:
select count(*) as num where id_buyer=1
#get num into your code
if(num==0)
insert
此限制记录在以下文件中:
作为一种解决方法,您可以将子查询包装到另一个子查询(嵌套)中并避免该错误
INSERT INTO kelengkapan_berkas (id_buyer, nama_berkas) VALUES
('1', (SELECT NAME (SELECT jenis_berkas.nama_berkas NAME FROM jenis_berkas WHERE id_job = '1') ,.....
步骤1:
从数据库中选择记录,然后构造成数组,
步骤2:
最后,您可以从上面选择的记录执行插入查询
这应该很容易抱歉,伙计们,我是新手,但实际上我想确保所有新记录都插入到新表中,使用php有点难,因为循环会导致速度变慢,所以我使用MySQL触发,结果与我想要的一样
DELIMITER |
CREATE DEFINER = 'root'@'localhost' TRIGGER `copy_berkas`
AFTER INSERT
ON `buyer`
FOR EACH ROW
INSERT INTO kelengkapan_berkas
(id_buyer, nama_berkas)
SELECT NEW.id, jenis_berkas.nama_berkas
FROM jenis_berkas WHERE jenis_berkas.id_job = NEW.job|
DELIMITER ;
很抱歉出现问题我没有这样做,结果是错误代码1093,数组结果很好问题是子查询指向目标,但我必须确保没有现有记录您可以解释嵌套的子查询吗?很抱歉,您的结果再次指向循环,而且我需要将所有现有记录复制到1 id\u买家。
DELIMITER |
CREATE DEFINER = 'root'@'localhost' TRIGGER `copy_berkas`
AFTER INSERT
ON `buyer`
FOR EACH ROW
INSERT INTO kelengkapan_berkas
(id_buyer, nama_berkas)
SELECT NEW.id, jenis_berkas.nama_berkas
FROM jenis_berkas WHERE jenis_berkas.id_job = NEW.job|
DELIMITER ;