我无法比较此数组的值
$products = [];
foreach (array_keys($match[2]) as $idx)
{
$tagliaprodotto = rtrim(substr($match[2][$idx],1));
$tagliaquantita = ltrim($match[3][$idx],'0');
$products[] = [
'product' => $tagliaprodotto,
'quantity' => $tagliaquantita,
'terminal' => $match[4][$idx]
];
}
使用数据库中的值!我应该这样做吗?
我想将数据库中的元素与数组的值进行比较,并将其作为:
- 如果数据库中没有产品:
INSERT INTO table (product, quantity, terminal, date) VALUES (:product, :quantity, :terminal, NOW ())
- 如果数据库记录完美匹配:产品,数量和终端:Do nothing
- 如果数据库记录包含:相同产品但数量不同和/或终端:
UPDATE table SET quantity=:quantity, terminal=:terminal
答案 0 :(得分:1)
我假设您在product
上编号,否则会变得更加棘手。使用ON DUPLICATE KEY
和IF()
的组合:
INSERT INTO table (product, quantity, terminal, date)
VALUES (:product, :quantity, :terminal, NOW())
ON DUPLICATE KEY UPDATE
quantity = IF(quantity != :quantity AND terminal = :terminal, :quantity, quantity),
terminal = IF(quantity = :quantity AND terminal != :terminal, :terminal, terminal)
如果product
(或任何指定列)上没有索引,则UPDATE
将永远不会触发。如果查询中的多个列上有索引,则会出现您不打算更新的行更新的问题,尤其是在索引不唯一的情况下。