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