-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);リソース ポインタに応じて、一度に 1 行だけフェッチします。

このポインターは、そのステートメントを使用すると増加するため、ループステートメントで使用すると、すべての行が得られます。

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

mysqliAPI のような、またはAPI のPDO代わりに、より安全な API を試してくださいmysql_*それらは非推奨です。

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 に答える