EDIT:MySQL_query
をwhileループで実行するのではなく変数にするというPhilのコメントが正解でした。mysql_fetch_assocを呼び出すと、複数回呼び出された場合でも最初の結果が返されます(閉じる:TYPO)
私は、アイテムテーブルのすべてのアイテムをMySQL_fetch_assoc演算子を使用してプリントアウトしようとしています。 whileループで呼び出された場合でも最初の結果だけを返しますが、実行中のコマンドラインから呼び出されると、すべての正しい結果が返されます。私は$numRows > 0
の条件を使わずにwhileコマンドを実行しようとしましたが、最初の結果のみを含む無限の配列を返します。
...
$query = "SELECT * FROM item JOIN seller ON item.seller_id = seller.seller_id;";
$numRows = MySQL_num_rows(MySQL_query($query));
while ($numRows > 0 && $row = MySQL_fetch_assoc(MySQL_query($query))) {
echo "<tr><td>" . $row["item_name"] . "</td>\n" .
" <td>" . $row["category"] . "</td>\n" .
" <td>" . $row["item_price"] . "</td>\n" .
" <td>" . $row["user_email"] . </td>\n" .
" </tr>\n";
$numRows--;
...
これは、すべての項目
Name Category Price Seller Email
cup utensils 200 [email protected]
shaker utensils 300 [email protected]
spoon utensils 400 [email protected]
のテーブルを返すだけであなたのwhileループは、それぞれの新しいリソースを作成している
Name Category Price Seller Email
cup utensils 200 [email protected]
cup utensils 200 [email protected]
cup utensils 200 [email protected]
これはあなたの問題を解決するものではありませんが、mysql_コンストラクタはPHP **の** **で廃止予定です(https://wiki.php.net/rfc/mysql_deprecation) ** PHP 7 **で削除されました](https://wiki.php.net/rfc/remove_deprecated_functionality_in_php7#extmysql)。 [** MySQLi **](http://php.net/manual/en/book.mysqli.php)または[** PDO **](http://php.net/manual/)への切り替えを検討してください。 en/book.pdo.php)を使用して、[** prepared statements **](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)を使用して[** SQLインジェクション**](https://en.wikipedia.org/wiki/SQL_injection):) –
@ObsidianAgeそれは分かっていますが、私は学校のサーバーがまだPHPバージョン<= 5.5を使用していると思います。 MySQLIを補うようにしてください。何も返されません。 – Spikes
同じクエリを再実行しています。あなたは 'mysql_query()' ** **を一度呼び出すだけで、結果を変数に保存する必要があります。 – Phil