2014-12-13 78 views
1

我mysqli_result對象無法成功查詢我可以在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

+1

你是什麼意思'修改對象?無論如何,你要修改那裏?你想做什麼?預期的結果是什麼? – Ghost 2014-12-13 08:02:54

+0

正如我在我的代碼中所評論的那樣,我想刪除符合條件語句的那一行.. @ Ghost – 2014-12-13 08:18:36

+0

不,你不能刪除那行,它不在'mysqli result object'內。它不在'$ party_set'裏面,你只能跳過迭代,或者創建必要的'WHERE'子句來排除它。 – Ghost 2014-12-13 08:23:02

回答

2

你不能修改一個mysqli結果對象。該對象只是一個句柄,可讓您訪問MySQL服務器上的MySQL結果集。你也不能改變這一點。您的選項是:

  1. 從結果對象中獲取數據到數組中,例如, $data[] = mysqli_fetch_assoc($result);。這是一個正常的數組,你可以隨意修改。如果你在循環中這樣做,只要不要將行放入數據數組中,如果你不喜歡它。
  2. 使用WHERE子句進行查詢,該子句從頭開始排除不需要的行。
  3. 如果你的意思是你想從數據庫中完全刪除特定的行,你需要做一個單獨的DELETE FROM ..查詢,只是從結果集中刪除它什麼都不會做。再次,您可以通過適當的WHERE子句輕鬆完成此操作,例如, DELETE FROM .. WHERE (lat, lon, something something..)
1

你不需要修改原來的對象,而是創建一個新的數組:如果你需要修改數據庫以及不僅php的設置,然後再次運行查詢

$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; 
    } 
} 

使用IN運算符。

1

感謝你們每一個人。我解決了非常愚蠢的辦法這個問題..

我做了一個新的查詢字符串這樣的..

功能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; 
} 

反正,,非常感謝你

後我的項目做,我會重新嘗試使用你推薦什麼方式......運氣好大家

相關問題