2013-01-08 82 views
-1

取在PHP数组元素的确切数目我有一个数据库表被叫用户只有在它的一个条目。做好连接后,我这样做无法从SQL数据库

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']); 
    } 

的问题是,它打印的用户名无限。请帮助

+0

的mysql_query已经过时!尝试使用mysqli_query()。 http://de2.php.net/manual/en/mysqli.query.php – derWilly

回答

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

的这种执行是:

  1. 呼叫getUser
  2. 呼叫mysql_fetch_array的结果
  3. 分配结果$row
  4. 重复从1

你一遍遍呼唤getUser(),得到一个新的结果集每次。调用一次并将结果保存到变量中。

+0

'$行= mysql_fetch_array(的getUser()); 而($行){ \t回波($行[ '用户名']); }' 我试过,但没有影响 –

+0

请看看如何使用这些功能的一个真实的例子:http://www.php.net/mysql_fetch_array。请注意页面顶部的大型阅读框。 – deceze

-1

,因为你只需要一个行作为结果,考虑使用 和mysql_fetch_row();

$row = mysql_fetch_row(getUser()); 

这将返回$行中的数组与该行的字段。

无论如何,如果你仍然想使用mysql_fetch_array(),不要忘记通过第二个参数的结果类型数组(MYSQL_ASSOC,MYSQL_NUM,或MYSQL_BOTH)

while ($row = mysql_fetch_array(getUser(), MYSQL_NUM)) { 
    echo($row[0]); 
} 
0

的问题是,你”重新调用getUser(),它在循环中重新生成结果。

此代码将做的东西:

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

MySQL扩展已被弃用,从而考虑迁移到不同的一个按derWilly的评论