mysql_fetch_assoc()返回单行,即使有很多行

时间:2013-07-24 12:01:47

标签: php mysql

我正在尝试运行这个程序,但是出乎意料的是mysql_fetch_assoc()函数只返回第一个条目,即使有很多条目,并且foreach循环错误中的更多信息表示非法'参数'用户名被给出

<?php
$dbc=mysql_connect("localhost","root","nanu");
mysql_select_db('users');
$getQuery='SELECT * FROM userst  ORDER BY username';
$result=mysql_query($getQuery,$dbc);
$rel=mysql_fetch_assoc($result);
echo'<pre>'.print_r($rel).'<pre/>';
echo"<br/>".$rel['username']."<br/>";
foreach($rel as $Query[]){
echo $Query['username'];
}
?>

5 个答案:

答案 0 :(得分:5)

mysql_fetch_assoc()始终返回下一行或false。你应该循环调用它:

while ($rel = mysql_fetch_assoc($result)) {...}

答案 1 :(得分:2)

您正在返回一个行数组,您必须遍历每一行

while ($rel = mysql_fetch_assoc($result))
{
    echo'<pre>'.print_r($rel).'<pre/>'; 
    echo"<br/>".$rel['username']."<br/>";
    foreach($rel as $Query[]){ //don't think you need this foreach loop
    echo $Query['username'];
    }
}

Please, don't use mysql_* functions in new code

答案 2 :(得分:1)

$rel=mysql_fetch_assoc($result);一次只能获取一行,具体取决于资源指针。

一旦使用该语句,此指针将增加,因此将它与循环语句一起使用将为您提供所有行。

while ($rel = mysql_fetch_assoc($result)) {
    echo $rel['username'];
}

请尝试更安全的API,例如mysqliPDO而不是mysql_* API。 他们已被弃用。

http://php.net/manual/en/mysqlinfo.api.choosing.php

  

建议不要将旧的mysql扩展用于新开发,因为它已从PHP 5.5.0开始被弃用,并且将来会被删除。

答案 3 :(得分:0)

mysql_fetch_assoc返回当前指针的行。您需要将它用作循环的一部分,如PHP文档所示:

while ($row = $result->fetch_assoc()) {

答案 4 :(得分:0)

while ($row = mysql_fetch_assoc($result)) {
echo $row['username'];
}