2014-11-02 125 views
0

我有這樣的foreach循環:PHP - foreach循環只運行一個

$d=$dbh->prepare("SELECT * FROM users_rented WHERE since <= unix_timestamp(CURRENT_TIMESTAMP - INTERVAL 14 day) AND clicks_last <= unix_timestamp(CURRENT_TIMESTAMP - INTERVAL 14 day)"); 
    $d->execute(); 
     $array = array(); 
     foreach ($d as $data) { 
       $array[] = $data['id']; 
        #print_r($new_array); 
        $userToRecycleFor = $data['user_by']; 

        $outcome = $rentedrefs->_recycleMulti(0, $userToRecycleFor, $array, 1); 


     } 

$d查詢有2406個結果時,我在MySQL數據庫中運行它。

foreach循環僅在每個頁面上運行1次刷新。因此,而不是更新所有2406個用戶(按照SQL查詢),它每更新一次只更新一次。

我在做什麼錯?

+1

您應該獲取結果。有人與你有完全相同的問題 - > http://stackoverflow.com/questions/16916036/fetch-in-pdo-gets-only-one-result – pbaldauf 2014-11-02 16:23:30

+0

你正在尋找'PDO :: fetch' http:// php.net/manual/en/pdostatement.fetch.php – Victory 2014-11-02 16:23:36

回答

1

你需要循環

$result = $d->fetchAll(); 

foreach ($result as $data) { 
    $userToRecycleFor = $data['user_by']; 
} 
1

之前獲取數據你要取環比之前的結果。嘗試改變這些行:

$d->execute(); 

$array = array(); 

$rows = $d->fetchAll(PDO::FETCH_ASSOC); 

foreach ($rows as $data) { 
    $array[] = $data['id']; 
    $userToRecycleFor = $data['user_by']; 

    $outcome = $rentedrefs->_recycleMulti(0, $userToRecycleFor, $array, 1); 
} 
0

通常情況下,你獲取的結果是這樣的:(例如mysqli的)

$mysqli = new mysqli(HOST, USER, PASSWORD, DB); 
$query = $mysqli->query("SELECT id, name, store FROM food"); 

while($array = $query->fetch_array(MYSQLI_ASSOC)) 
{ 
    $finalArray = $array; 
} 

foreach($finalArray as $item) 
{ 
    // your process 
}