Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql插入值选择不存在_Php_Mysql_Select_Insert_Mysqli - Fatal编程技术网

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 ;