繁体   English   中英

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

[英]Can I edit mysqli_result object in php?

我从成功查询得到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

您不能修改mysqli结果对象。 该对象只是一个句柄,可让您访问MySQL服务器上的MySQL结果集。 您也不能更改它。 您的选择是:

  1. 将数据从结果对象获取到数组中,例如$data[] = mysqli_fetch_assoc($result); 然后它是一个普通数组,您可以根据需要进行修改。 如果你在一个循环中这样做,根本就没有把一行到你的数据数组,如果你不喜欢它。
  2. 使用WHERE子句进行查询,该子句从头开始排除不需要的行。
  3. 如果您要完全删除数据库中的特定行,则需要执行单独的DELETE FROM ..查询,仅将其从结果集中删除将不会执行任何操作。 同样,您可以使用适当的WHERE子句轻松完成此操作,例如DELETE FROM .. WHERE (lat, lon, something something..)

您不需要修改原始对象,而是创建一个新数组:

 $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运算符运行另一个查询。

谢谢大家..我以非常愚蠢的方式解决了这个问题。

我做了这样的新查询字符串。

函数checkDistance($ currentLat,$ currentLng,$ setDistance){全局$ connection; $ party_set = find_all_parties(); // mysqli_result对象$ query =“ SELECT *”; $ query。=“ FROM派对”; $ 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; } 

无论如何,非常感谢你

在我的项目完成后,我将按照您的建议重试...祝大家好运

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM