foreach循环只运行一次


foreach loop only runs one

我有一个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);

        }

当我在MySQL数据库中运行$d查询时,它有2406个结果。

foreach循环在每次页面刷新时仅运行1次。因此,它没有更新所有2406个用户(根据SQL查询),而是每次刷新只更新1个。

我做错了什么?

您需要在循环之前获取数据

$result = $d->fetchAll();
foreach ($result  as $data ) {
   $userToRecycleFor = $data['user_by'];
}

在循环之前必须获取结果。尝试更改以下行:

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

通常情况下,您会获取这样的结果:(例如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
}