【问题标题】:How do I loop in PHP and get multiple rows returned from MySQL database?如何在 PHP 中循环并从 MySQL 数据库返回多行?
【发布时间】:2026-02-15 18:55:01
【问题描述】:

我创建了一个要求激活电子邮件的登录系统。一切正常。但是,没有真正的“垃圾邮件”保护。当用户创建一个帐户时,它会插入一行,其中 'activated' = 'NO' 列。

我想这样做,如果用户没有激活他们的帐户,比如说 3 个小时,它将从 MySQL 数据库中删除该行。我做了一个 cron 作业,每 30 分钟运行一次。

<?php

ob_start();
include 'global.php';
ob_end_clean();

$check_times = (time() - ('-3 hours'));
$query = "SELECT * FROM users WHERE time<=$check_times and activated='NO'";
$result = mysql_query($query) or trigger_error(mysql_error().$query);
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$inactive_user = $row['username'];

echo $inactive_user;
echo "<br>";
echo $check_times;
?>

“global.php”正在连接到数据库。上面的代码有效,但只适用于一行(它只返回第一个实例的值)

我已经研究了“Do While”和“Loop until”以及其他任何东西,但不知道在括号中放什么……Do While(//我在这里放什么?)

目前,代码只回显实例,但我会将其更改为删除

【问题讨论】:

标签: php mysql loops


【解决方案1】:

您将所有usernames 插入到$inactive_user[] 中。

    $inactive_user = array();
while($rows = mysqli_fetch_array($result){
    $inactive_user[] = $rows['username'];
}

然后循环数组并回显每个用户:

foreach($inactive_user as $us){
    echo $us;
}

由于不推荐使用mysql,您应该使用mysqliPDO

【讨论】:

  • 太棒了,真是一种享受。但是,它似乎不喜欢mysqli。这有什么原因吗?它有多重要?
  • 对不起...大脑冻结。我将如何从表中删除它们?我在想这样的事情: foreach($inactive_user as $us){ mysql_query ("DELETE * FROM users WHERE username = $inactive_user "); }
  • $us 是一个字符串,它不会将它们识别为不同的用户,并且 $inactive 用户不起作用
  • mysql_query("DELETE FROM users WHERE username = '$us'").请注意,您需要在TABLE users 中设置UNIQUE INDEX 以避免重复usernamesmysql 以后将不再支持。 mysqli 是“新更新的”mysql。如果您想使用mysqli 进行查询,您必须使用mysqli 设置您的连接。例如。 $link = new mysqli($host, $user, $password, $database);php.net/manual/en/mysqli.query.php如果我的帖子回答了你的问题,请点击勾选接受。
【解决方案2】:
while($row = mysql_fetch_array($result)) {
    $inactive_user = $row['username'];
}

此外,您应该逐步停止使用 mysql_ 函数,并查看 mysqli 作为替代 - mysql_ 已弃用。

【讨论】:

  • 第 9 行出现很多错误 - $result = mysqli_query($query) 或 trigger_error(mysqli_error().$query);
  • 我不能写出所有的错误,但它预计第 9 行至少有 2 个参数,我得到这个“警告:mysqli_fetch_array() 期望参数 1 为 mysqli_result,给定 null”
  • 这不是函数的交换——过渡还有更多内容,但你绝对应该研究一下——perhaps start here