-1

エントリが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

結果として 1 行だけが必要なため、mysql_fetch_row(); の使用を検討してください。

$row = mysql_fetch_row(getUser());

その行のフィールドを含む $row の配列を返します。

とにかく、まだ mysql_fetch_array() を使用したい場合は、結果の配列の型 (MYSQL_ASSOC、MYSQL_NUM、または MYSQL_BOTH) の 2 番目の引数を渡すことを忘れないでください。

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