仅返回缺少/不同数据的查询

时间:2019-07-15 14:02:45

标签: 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
)

比只能选择测试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 . "'");

当我运行第一个查询时,如何获得仍未插入到当前category_id的shared_products_view中的结果?

2 个答案:

答案 0 :(得分:0)

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

喜欢

$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");

答案 1 :(得分:0)

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

最好使用PDO和bindValue()并明确声明它是整数。

如果我理解正确,那么您想知道INSERT是否成功。 (对吗?)

在这种情况下,请检查命令$ this-> db-> query(“ INSERT ...”)的结果。

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

我强烈建议您在继续之前先阅读本动手指南:

https://phpdelusions.net/pdo