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

Php 通过循环将MySql数据库中的值添加到数组中,php,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 = mys

我一直试图设置一个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;
}
$get\u email=mysqli\u query($con,“从lastSeen='20'所在的用户中选择id”);
$email=mysqli\u fetch\u数组($get\u email);
$num_days=mysqli_num_行($get_email);
$i=1;
$array_id=array();

虽然($i首先,您的代码令人困惑。您从数据库中获得ID,但变量的名称显示为“email”。请尽量保持一致,这将有助于您以后再次阅读此代码

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

接下来,PHP函数仅将列
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');

不会像您所想的那样返回所有结果集。文档中说:“获取结果行…”。这意味着您必须在循环中反复调用它以获取所有行。@axiac我可以用什么替换它以获得预期的结果。