Php 返回仅包含缺失/不同数据的查询

Php 返回仅包含缺失/不同数据的查询,php,mysql,select,Php,Mysql,Select,我有一个表格,您可以选择类别,并将返回该类别中的产品 $query = $this->db->query("SELECT id, name FROM " . DB_PREFIX . "shared_products_product WHERE category = '" . (int)$id . "' AND status != 2"); 结果 Array ( [0] => Test 1 [1] => Test 2 [2] => Test 3 ) 然后,您只能选

我有一个表格,您可以选择类别,并将返回该类别中的产品

$query = $this->db->query("SELECT id, name FROM " . DB_PREFIX . "shared_products_product WHERE category = '" . (int)$id . "' AND status != 2");
结果

Array
(
[0] => Test 1
[1] => Test 2
[2] => Test 3
)
然后,您只能选择测试1和测试2插入到不同的表中

$this->db->query("INSERT INTO " . DB_PREFIX . "shared_products_view SET product_id = '" . (int)$product_id . "', shared_product_id = '" . (int)$shared_product_id . "', category_id = '" . (int)$cat_id . "'");

当我运行第一次查询时,我将如何获得当前类别id的共享产品视图中仍未插入的结果?

您需要联接表并检查值是否已经存在

像这样

$query = $this->db->query("SELECT `spp`.id, `spp`.name 
FROM " . DB_PREFIX . "shared_products_product `spp`
LEFT JOIN " . DB_PREFIX . "shared_products_view `spv` ON `spp`.`id`=`spv`.shared_product_id 
WHERE category = '" . (int)$id . "' AND status != 2 AND `spv`.shared_product_id IS NULL");

您需要联接表并检查值是否已经存在

像这样

$query = $this->db->query("SELECT `spp`.id, `spp`.name 
FROM " . DB_PREFIX . "shared_products_product `spp`
LEFT JOIN " . DB_PREFIX . "shared_products_view `spv` ON `spp`.`id`=`spv`.shared_product_id 
WHERE category = '" . (int)$id . "' AND status != 2 AND `spv`.shared_product_id IS NULL");

当您运行第二个查询时,插入的行将被添加,除非您有错误。我想到的一件事是,您似乎将整数作为字符串插入

最好使用PDO和bindValue()并显式声明它是一个整数

如果我没弄错的话,你想知道插入是否成功。(对吗?)

在这种情况下,检查命令$this->db->query(“插入…”)的结果

您没有提到数据库句柄$this->db是什么,但我希望它在失败时返回false

我强烈建议您在继续之前先学习本实践指南:


当您运行第二个查询时,插入的行将被添加,除非您有错误。我想到的一件事是,您似乎将整数作为字符串插入

最好使用PDO和bindValue()并显式声明它是一个整数

如果我没弄错的话,你想知道插入是否成功。(对吗?)

在这种情况下,检查命令$this->db->query(“插入…”)的结果

您没有提到数据库句柄$this->db是什么,但我希望它在失败时返回false

我强烈建议您在继续之前先学习本实践指南:


不是我想要的@Oleksandr Pobuta提交正确答案不是我想要的@Oleksandr Pobuta提交正确答案