2014-11-02 126 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 
}