在MySql中多次更新一个字段

时间:2014-03-06 09:56:42

标签: php mysql csv sql-update

美好的一天。

我已经完成了一个在数据库中复制CSV的脚本,然后开始导入系统中的数据。这是通过在整个“导入”表上多次传递来完成的,首先是导入类别,然后是产品......等等。 每次脚本通过时,它都会更新一个名为importato的标志字段,当我复制CSV时它为0,然后我导入类别,所以我把它放在1,然后是2,依此类推。通过这种方式,我可以跟踪发生的事情。

如果我在导入期间遇到一些错误,我将importato字段设置为10,所以最后我有所有错误的项目。但是我想跟踪过去的导入,所以每次写CSV时我都会将importato更新为11,然后更新为12然后是13,最后我删除所有13.这是由一系列{ {1}}:

update

问题是......字段永远不会更新,它保持在if(mysql_query("DELETE FROM `importazione` WHERE importato = 13")){ if(mysql_query("DELETE FROM `importazione` WHERE (importato = 4) OR (importato = 5) OR (importato = 6)")){ if(mysql_query("UPDATE importazione set importato = 13 where importato = 12")){ if(mysql_query("UPDATE importazione set importato = 12 where importato = 11")){ mysql_query("UPDATE importazione set importato = 11 where importato = 10"); } } } } ...没有错误被抛出...... 可能是某个缓冲的问题?或者我犯了一些我没有得到的错误?

1 个答案:

答案 0 :(得分:1)

我猜这是因为mysql_query的结果如果传递给if语句,其中一个语句失败,这意味着其下的其他查询将无法运行。检查您的用户是否具有能够执行DELETE FROM的权限。

你做这件事的方式也非常缺乏。您可以在2个

中的5个查询中执行您正在执行的操作
if(mysql_query("DELETE FROM `importazione` WHERE importato = 13 OR importato IN (4,5,6)") {
    mysql_query("UPDATE importazione SET importato = importato + 1 WHERE importato IN(12,11,10)");
}

请注意,mysql_函数现已弃用,因此您应考虑使用其他