我有一个产品的CSV文件,如果存在,则需要添加或更新,即使已从列表中删除它,也要保留旧的文件。
我有这样一个循环:
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE)
这很好用,从中我分配了几个这样的变量:
$price = htmlspecialchars(mysql_real_escape_string($data[2]), ENT_QUOTES, 'utf-8' );
设置完所需的4个变量后,我将像这样查询MySQL:
mysql_query("SELECT * FROM products WHERE productid = '$prodid' AND supplier = 'SUPPLIER1'")
如果结果为1或更多,我们将对其进行更新
mysql_query("UPDATE tuotteet SET
supplier = 'SUPPLIER1',
product = '$product',
prodid = '$prodid',
ean = '$ean',
price = '$price' WHERE prodid= '$prodid' AND supplier = 'SUPPLIER1'") or die(mysql_error());
如果从数据库中找不到产品,我们将再次查询INSERT。问题在于,这是一种非常缓慢的方法,要花费大约几分钟才能完成大约10000条生产线。
有什么关系吗?
最佳答案
在开始该过程之前,我将在数据库中查询数据库中所有product_id,然后将它们存储在字典中。
然后,开始处理csv文件。
对于每条记录,只需询问字典是否具有当前product_id的键。
这样,您就不必为在csv中拥有的每条记录都去数据库。