通过循环将MySql数据库中的值添加到数组中

时间:2017-10-21 07:10:42

标签: php

我一直在尝试设置while循环,将用户有20天的所有ID添加到数组中。目前,它显示未定义偏移的错误。我如何编写代码,以便它首先获取lastSeen列中第一行的id为20天,然后是第二行的id,然后将它们添加到数组中?

$get_email = mysqli_query($con, "SELECT id FROM users WHERE lastSeen='20'" );
$email = mysqli_fetch_array($get_email);
$num_days = mysqli_num_rows($get_email);
$i = 1; 
$array_id = array();
while($i <= $num_days){
array_push($array_id, $email[$i]);
$i = $i + 1;
}

1 个答案:

答案 0 :(得分:1)

首先,您的代码令人困惑。您从数据库中获取ID,但变量的名称告诉“email”。尽量保持一致,以后再次阅读此代码时会有所帮助。

由于您不使用从数据库获取的值进行任何处理,因此可以使用mysqli_fetch_all()。它在数组中一次性返回记录集中的所有行。传递MYSQLI_ASSOC作为其第二个参数,告诉它使用列名(来自查询的SELECT子句)作为它从结果集的每一行创建的数组中的键。

接下来,PHP函数array_column()仅将列id的值提取到一个包含所需值的新数组中:

$result = mysqli_query($con, "SELECT id FROM users WHERE lastSeen='20'");
// Get all the rows, indexed by column names
$rows   = mysqli_fetch_all($result, MYSQLI_ASSOC);
// Get only the 'id' column
$ids    = array_column($rows, 'id');