美好的一天。
我已经完成了一个在数据库中复制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");
}
}
}
}
...没有错误被抛出......
可能是某个缓冲的问题?或者我犯了一些我没有得到的错误?
答案 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_
函数现已弃用,因此您应考虑使用其他