我一直在尝试设置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;
}
答案 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');