-1

我有一个名为 user 的数据库表,其中只有一个条目。建立连接后,我这样做

function dbQuery($sql)
    {
    $result = mysql_query($sql) or die(mysql_error());

    return $result;
    }

这将运行收到的查询。然后

function getUser(){
    $sql = "select username from user";
    return dbQuery($sql);
}

现在我调用这个getUser()函数来获取用户名

while($row=mysql_fetch_array(getUser())){
    echo($row['username']);
  }

问题是它无限打印用户名。请帮忙

4

3 回答 3

1
while($row=mysql_fetch_array(getUser())){

这个的执行是:

  1. 称呼getUser
  2. 调用mysql_fetch_array结果
  3. 将结果分配给$row
  4. 从 1 开始重复。

getUser()一遍又一遍地打电话,每次都得到一个新的结果集。调用一次并将结果保存到变量中。

于 2013-01-08T10:46:04.717 回答
0

问题是您正在调用getUser()它在循环中重新生成结果。

此代码将执行以下操作:

$row=mysql_fetch_array(getUser());
echo $row['username'];

MySQL 扩展已被弃用,因此请考虑根据 derWilly 的评论移至不同的扩展

于 2013-01-08T11:23:26.877 回答
-1

由于您只想要一行结果,请考虑使用 mysql_fetch_row();

$row = mysql_fetch_row(getUser());

这将在 $row 中返回一个包含该行字段的数组。

无论如何,如果您仍想使用 mysql_fetch_array(),请不要忘记为结果数组的类型(MYSQL_ASSOC、MYSQL_NUM 或 MYSQL_BOTH)传递第二个参数

while ($row = mysql_fetch_array(getUser(), MYSQL_NUM)) {
    echo($row[0]); 
}
于 2013-01-08T11:10:08.153 回答