1

問題はおそらく非常に単純です。

$q = "SELECT id FROM users
        WHERE name LIKE '%$u%' OR active LIKE '%$u%'";
        echo $q;
$u = mysql_query($q) or die("There is a server error : " . mysql_error());
$u = mysql_fetch_array($u);
        print_r($u);

しかし、それは私を返します

[id] => 6

Mysql Workbenchでクエリを実行すると、次のようになります。

6
7
8

おそらくフェッチの問題ですが、理由はわかりません。ありがとう :)

4

4 に答える 4

1

whileループなしを使用するとmysql_fetch_array($u)、単一のレコードが返されます。mysql_fetch_array($u)結果セット全体をフェッチするには、whileループで使用する必要があります。例えば:

$q = "SELECT id FROM users WHERE name LIKE '%$u%' OR active LIKE '%$u%'";
$u = mysql_query($q) or die("There is a server error : " . mysql_error());
while($row = mysql_fetch_array($u))
{
print_r($row);
}
于 2012-06-23T05:44:00.357 に答える
1

これは、 mysql_fetch_array1行しか返さないためです。より多くの行を取得するために、ループで機能します。

while ($row = mysql_fetch_array($u)) {
   print_r($row);
}

ただし、関数の使用に関する私のコメントを読んでくださいmysql_*。これです:

Stack Overflowへようこそ!mysql_*新しいコードに関数を使用しないでください。それらはもはや維持されておらず、コミュニティは非推奨プロセスを開始しています。赤いボックスが表示されますか?代わりに、プリペアドステートメントについて学び、 PDOまたはMySQLiのいずれかを使用する 必要があります。決定できない場合は、この記事を選択するのに役立ちます。あなたが学びたいのであれば、ここに良いPDOチュートリアルがあります。

于 2012-06-22T20:22:02.573 に答える
0

mysql_fetch_array単一の行をフェッチします。残りの結果を取得するには、結果セットを反復処理する必要があります。

于 2012-06-22T20:22:32.310 に答える
0

mysql_fetch_array()1行のみを返します。より多くの行を取得するには、ループが必要です。

またmysql_fetch_array()、文字列の関連付けと統合インデックスの両方を返します。使用したいものは次mysql_fetch_assoc()のようなものです。

while ($data = mysql_fetch_assoc($u)) {
   echo $data['id'];
}
于 2012-06-22T20:26:29.693 に答える