-3

我正在尝试运行这个程序,但意外的是 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'];
}
?>
4

5 回答 5

5

mysql_fetch_assoc()总是返回下一行或 false。您应该循环调用它:

while ($rel = mysql_fetch_assoc($result)) {...}
于 2013-07-24T12:03:18.383 回答
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'];
    }
}

请不要在新代码中使用 mysql_* 函数

于 2013-07-24T12:09:09.633 回答
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 中已被弃用,并且将来会被删除。

于 2013-07-24T12:05:14.617 回答
0

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

while ($row = $result->fetch_assoc()) {
于 2013-07-24T12:03:39.667 回答
0
while ($row = mysql_fetch_assoc($result)) {
echo $row['username'];
}
于 2013-07-24T12:06:17.403 回答