如果另一个表中不存在值,如何插入行?

时间:2015-12-16 22:14:03

标签: php mysql

这是我的疑问:

"INSERT INTO tbl_pedidos_fornecedors_produtos (pedido_id, prefeitura_id, fornecedor_id, produto_id) VALUES (".$pedido_id.", ".$_SESSION["id"].", ".$fornecedor_ids[$i]["fornecedor_id"].", ".$value->id.")"

我该怎么做?

"INSERT INTO tbl_pedidos_fornecedors_produtos (pedido_id, prefeitura_id, fornecedor_id, produto_id) VALUES (".$pedido_id.", ".$_SESSION["id"].", ".$fornecedor_ids[$i]["fornecedor_id"].", ".$value->id.") WHERE ".$value->id." NOT IN (SELECT id FROM tbl_pedidos_produtos)"

3 个答案:

答案 0 :(得分:1)

你需要PHP来完成这个条件:

<?php
    $exist = $db->getVal('select 1 from tbl_pedidos_produtos where id=:id limit 1',
        [':id' => $value->id]);
    if ($!exsit) {
        $db->query('INSERT INTO tbl_pedidos_fornecedors_produtos ...', [...]);
    }

用适当的数据库函数替换$ db-&gt; getVal,$ db-&gt;查询

答案 1 :(得分:1)

尝试此查询:

insert into tbl_pedidos_fornecedors_produtos 
(pedido_id, prefeitura_id, fornecedor_id, produto_id) 
select * from (select '$pedido_id', '$_SESSION["id"]', '$fornecedor_ids[$i]["fornecedor_id"]', '$value->id') as temp 
WHERE $value->id NOT IN (SELECT id FROM tbl_pedidos_produtos)

答案 2 :(得分:0)

进行两个查询 - SELECT ... tbl_pedidos_produtos以确定项目是否存在然后INSERT tbl_pedidos_fornecedors_produtos如果不是