2016-12-08 58 views
1

我一直在努力工作這一個在我的腦海裏幾個小時,仍然沒有運氣,所以我導致在這裏。奇怪的PHP雖然循環

由於某些原因,當代碼中的查詢取消註釋時,循環只會循環一次即使tho數據庫中有3個日誌,如果我們然後評論查詢它按預期工作。

$sth = $dbh->prepare("SELECT * FROM `savedusers`"); 
$sth->execute(); 
while($row = $sth->fetch(PDO::FETCH_ASSOC)){ 
    $run++; 
    foreach($sites as $site){ 
    $clients = ${CalculateControllerVar($site['site_id'])}->list_clients($site['site_id']); 
    foreach($clients as $client){ 
     if(strtolower($client->mac) == strtolower($row['Mac'])){ 
     $aps = ${CalculateControllerVar($site['site_id'])}->list_aps($site['site_id'], $client->ap_mac); 
     $sth = $dbh->prepare("UPDATE `savedusers` SET `Location` = :loc WHERE `Mac` = :mac"); 
     $sth->execute(array(':loc' => $aps[0]->name, ':mac' => $row['Mac'])); 
     } 
    } 
    } 
} 

在此先感謝。

+0

你如何確定它只循環一次? – invisal

+0

通過在循環之後回顯$運行。 – Snazzy

回答

2

這是因爲你在你的註釋代碼中覆蓋變量$sth。將這些行更改爲:

$sth2 = $dbh->prepare("UPDATE `savedusers` SET `Location` = :loc WHERE `Mac` = :mac"); 
$sth2->execute(array(':loc' => $aps[0]->name, ':mac' => $row['Mac'])); 

它會正常工作。

+0

哦,我的上帝我很蠢我已經花了幾個小時看着這個。謝謝。 – Snazzy