循环遍历PHP

时间:2018-03-27 04:45:03

标签: php while-loop

我正在报告应用程序中给定页面集的访问结构。 这些页面组合在一起成为能力。如果一个ID有这个功能的任何一个页面我想记录一次能力ID和id,即使他们可能有几个页面提供访问权限。 使用下面的代码,它会写出每个用户(id)数千次,重载网站并填满表格。 我知道逻辑是有缺陷的,但我希望通过在循环中执行选择来检查是否存在id和能力(跳过插入)我可以消除表中的重复条目。它不起作用,我相信这可以更精简:

 $ability_page_details1 = $DB_con2->prepare("SELECT PGD FROM PGD_DETAILS WHERE PGD = :pgd_ability1 AND SELECT_FLAG = 'Y'"); 
     $ability_page_details1->bindParam(':pgd_ability1', $pgd_ability1); 
     $ability_page_details1->execute(); 

     while($ability_content_page_row = $ability_page_details1->fetch(PDO::FETCH_ASSOC)) { 

     $pgd_page1 = $ability_content_page_row['PGD']; 
     //this is the page 



       //now lets work out all the Abilities that have this page 

     $ability_page_compare1 = $DB_con2->prepare("SELECT PGD.PNLNAME, AUTH.PNLITEMNAME,  
        PGD.SELECT_FLAG, AUTH.ACTIONS, AUTH.ID FROM PPGD INNER JOIN AUTH ON  
        PGD.PGDNAME = AUTH.PGDNAME WHERE PGD.PGDNAME = :pgdname_page1 AND AUTH.ACTIONS >0"); 
     $ability_page_compare1->bindValue(':pgdname_page1', $pgdname_page1); 
     $ability_page_compare1->execute(array(':pgdname_page1'=>$pgdname_page1)); 

     while($ability_page_compare_row1 = $ability_page_compare1->fetch(PDO::FETCH_ASSOC)) { 
     $id_ability1 = $ability_page_compare_row1['ID']; 

//检查ID是否已有条目,如果没有则插入

               $check_pm_for_abilities = $DB_con2->prepare("SELECT id, ability_id FROM validation_abilities WHERE id =:id"); 
      $check_pm_for_abilities->execute(array(":id" => $id_ability1));     

      $check_pm_for_abilities_row=$check_pm_for_abilities->fetch(PDO::FETCH_ASSOC); 

      if($check_pm_for_abilities_row['classid']==$id_ability1 && $check_pm_for_abilities_row['ability_id']==$ability_id1) { 

      } 
      else{ 

//现在为插入

   $validation_abilities = $DB_con2->prepare("INSERT INTO validation_abilities (id, validation_id, ability_id) 
      VALUES(:id, :validation_id, :ability_id)"); 
      $validation_abilities->execute(array(":id" => $id_ability1, ":validation_id"=>$validation_id, ":ability_id"=>$ability_id1)); 
      } 

0 个答案:

没有答案
相关问题