[英]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结果集。 您也不能更改它。 您的选择是:
$data[] = mysqli_fetch_assoc($result);
。 然后它是一个普通数组,您可以根据需要进行修改。 如果你在一个循环中这样做,根本就没有把一行到你的数据数组,如果你不喜欢它。 WHERE
子句进行查询,该子句从头开始排除不需要的行。 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.