我可以在php中编辑mysqli_result对象吗?

bq3bfh9z  于 2022-12-17  发布在  PHP
关注(0)|答案(3)|浏览(122)

我从成功查询中获得了mysqli_result对象
我想使用if语句修改此mysqli_result对象。

$party_set = find_all_parties(); //mysqli_result object

 while($party = mysqli_fetch_assoc($party_set)){
     $locArr =split(",",$party["loc"]);    
     $lat = $locArr[0];
     $lng = $locArr[1]; 

     if(distance($currentLat,$currentLng,$lat,$lng) > $seletedDistance ){             
         //I want remove the row if this condition is true             
     }
 }

如何修改$party_set??

vs3odd8k

vs3odd8k1#

您不能修改mysqli结果对象。该对象只是一个句柄,用于访问MySQL服务器上的MySQL结果集。您也不能更改它。您的选项包括:
1.将结果对象中的数据放入一个数组中,例如$data[] = mysqli_fetch_assoc($result);。然后它就变成了一个普通的数组,你可以随意修改。如果你在循环中这样做,只要 * 不要 * 将该行放入你的数据数组中,如果你不喜欢它。
1.使用WHERE子句进行查询,该子句从一开始就排除不需要的行。
1.如果你想从数据库中完全删除特定的行,你需要执行一个单独的DELETE FROM ..查询,仅仅从结果集中删除它是没有任何作用的。同样,你可以通过一个合适的WHERE子句,例如DELETE FROM .. WHERE (lat, lon, something something..),很容易地一次性完成。

xghobddn

xghobddn2#

你不需要修改原来的对象,但要创建一个新的数组:

$party_set = find_all_parties(); //mysqli_result object
 $new_party_set = array();
 while($party = mysqli_fetch_assoc($party_set)){
     $locArr =split(",",$party["loc"]);    
     $lat = $locArr[0];
     $lng = $locArr[1]; 

     if(distance($currentLat,$currentLng,$lat,$lng) <= $seletedDistance ){             
         $new_party_set[] = $party;
     }
 }

如果你也需要修改数据库而不仅仅是php设置,那么使用IN操作符运行另一个查询。

cgvd09ve

cgvd09ve3#

谢谢你们每一个人我用很愚蠢的方法解决了这个问题。
我创建了一个如下所示的新查询字符串..

function checkDistance($currentLat,$currentLng,$setDistance){
    global $connection;
    $party_set = find_all_parties(); //mysqli_result object
    $query = "SELECT * ";
    $query .= "FROM party ";
    $query .= "WHERE ";

    while($party = mysqli_fetch_assoc($party_set)){
         $locArr =split(",",$party["loc"]);    
         $lat = $locArr[0];
         $lng = $locArr[1];
         $id= $party["id"];
     
         //세팅 된 거리보다 거리가 작으면
         if(distance($currentLat,$currentLng,$lat,$lng) <= $setDistance ){

              $query .= "id = {$id} OR ";
          }

      }

     //delete last "OR "    $query = substr($query, 0, strlen($query) - 3);
     echo $query;

     $dt_party_set = mysqli_query($connection,$query);
     confirm_query($dt_party_set);

     return $dt_party_set;
 }

不管怎样,非常感谢
在我的项目完成后,我会用你推荐的方法重试...祝大家好运

相关问题