• phalcon: 当删除循环删除一组数据,需要判断影响的行affectedRows


    phalcon:有一个表,按日期查找半年以为的数据,由于数据量特别大,不能一次:delete删除数据,否则会造成数据表卡顿,数据库锁死。

    那么只能循环的删除数据,每次删除100条左右,知道删除为止。,此时需要判断,但删除到没有符合条件的数据,要判断到是否有没有影响到行数。需要$this->db->affectedRows()来判断,删除的sql是否影响到行。

    同时我们也不可能:先查找满足条件的数据,然后在删除,虽然能解决,但是此时多了一步查询,然后在foreach删除数据,得不偿失。

    在调用:

    for($i = 0; $i <10; $i++)
    {
    
    $this->modelsManager->executeQuery("delete FROM Demo"); 
    var_dump($this->db->affectedRows());
    
    }
    
    当执行到i=0时,数据已经完全删除了,以后的1-10部,其实都没有数据,但因为调用的是$this->modelsManager->executeQuery,所以,$this->db->affectedRows() 得值会一直是大于0的状态。
    
    或者当i=0时,删除的数据是null时,以后i=1-10后所有步骤,都会为空。
    
    所以此删除方便不可靠。
    

      

    经过查阅后发现,有一种方法可以避免此错误:

    for($i = 0; $i < 10; $i++)
    {	
    			
    	$this->db->delete("Demo");
             或者:
             $this->db->delete(
    		"Demo",
                   "条件"
    	);
        
    var_dump($this->db->affectedRows());	
    }    
    

      

     或者带limit:

    for($i = 0; $i < 10; $i++)
    {	
    			
    	$this->db->delete("Demo");
             或者:
             $this->db->delete(
    		"Demo",
                   "条件 limit 10"
    	);
        
    var_dump($this->db->affectedRows());	
    }  
    

      

  • 相关阅读:
    理解MapReduce计算构架
    熟悉HBase基本操作
    爬虫大作业
    熟悉常用的HDFS操作
    数据结构化与保存
    使用正则表达式,取得点击次数,函数抽离
    爬取校园新闻首页的新闻
    网络爬虫基础练习
    课后作业-阅读任务-阅读提问-5
    课后作业-阅读任务-阅读提问-4
  • 原文地址:https://www.cnblogs.com/achengmu/p/6209399.html
Copyright © 2020-2023  润新知