我一直很难找到一个很好的例子来说明我想要做什么。
我有一个包含1-N条目的多维数组。我想从这个数组更新MySQL中的表,但我想更新单个查询中的所有行。我无法找到任何多行更新的示例,这些更新设置了多列的值,并且还有where子句,比如确定哪些行已更新的功能。
我正在使用的表格设置如下:
TABLE
name varchar,
quota int,
warehouse int,
production int,
missing int
数组的排序方式如下,TABLE.name对应于材质名称:
$list = array(
'Material Name One'=>array(1000,200,600,200),
'Material Name Two'=>array(5000,0,4500,500)
);
有人可以提供一个如何形成这种语法的示例吗?
我想使用单个更新,因为数组/表的大小最终会变得非常大,我认为这种方法比快速连续制作数百个小更新要好。
答案 0 :(得分:2)
首先,我没有看到单独执行的更新有什么问题,尤其是使用预准备语句。
但是如果你想以任何理由实现多行更新,你需要建立一个像这样的查询
UPDATE Table1 t JOIN
(
SELECT 'Material Name One' name, 1000 quota, 200 warehouse, 600 production, 200 missing
UNION ALL
SELECT 'Material Name Two', 5000, 0, 4500, 500
-- You can add extra rows here
-- with UNION ALL
) u ON t.name = u.name
SET t.quota = u.quota,
t.warehouse = u.warehouse,
t.production = u.production,
t.missing = u.missing;
以下是 SQLFiddle 示例。