我在 mySQL 数据库上使用 PHP 脚本。我拥有的是为搜索页面提取的产品库存。我的工作正常,并且我的搜索页面工作完美。我唯一不知道的是如何更新数据库中每种产品的库存。我有一个新文件,需要与产品编号匹配,然后替换 mysql 数据库的一列中的数据。就像下面这样
mysql数据库:
产品编号......................产品库存
12345678........................................1
新文件:
12345678.................................5
基本上,我需要新文件与 mysql 上的产品编号相匹配,并用新编号替换产品库存。所有这些都在 PHP 中。
最佳答案
您没有说明该数据库中有多少行。通常个别更新非常慢。
你可以
- 使用 LOAD DATA INFILE 将“新股票”文件加载到临时表中
- 使用 JOIN 进行更新以设置产品表中的值
这将快几个数量级。
使用 mysql 上使用的语法进行更新:
UPDATE products p JOIN temp_products t ON (p.id=t.id) SET p.stock = t.stock;
请注意,您需要 LOAD DATA INFILE 的特殊权限。 您还可以使用 LOAD DATA INFILE LOCAL(查看文档)。
或者,您可以使用 PHP 解析文件,在临时表中生成包含多值的 INSERT,然后执行联接更新。这会比 LOAD DATA INFILE 慢一点,但比执行 27000 次查询要快得多。
关于MySQL 更新行。需要更新大量唯一的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6637109/