- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHP+MySQLを実行するとエラーが出てパソコンがフリーズする。)
PHP+MySQLでエラーが発生し、パソコンがフリーズする問題について
このQ&Aのポイント
- 次のphpを実行すると、求めるデータは表示できますが、その下にWarnning:mysql_result()[function.mysql_result]:Unable to jump to row 7 on MySQL result index 3 in C:****test.php on line 10;というエラーメッセージが表示され、それ以降も繰り返し出力され続け、パソコンがフリーズしてしまいます。
- 実行したphp文は、データベースに接続し、sampleテーブルからデータを取得し、出力するものです。
- 参考書を調べて試してみましたが、解決できません。どこに問題があるか、ご指摘いただけると助かります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
上記のスクリプトでは$iが定義されてないのですが実際のスクリプトでは$iが無限ループしてるのではないでしょうか。 結果を全部表示するなら私ならこうします <?php $con=mysql_connect(localhost,"root","root"); $selectdb=mysql_select_db("sales",$con); $sql="select * from sample"; $result=mysql_query($sql,$con); while ($row=mysql_fetch_array($result)) { $price=$row[1]; $volume=$row[2]; echo("$price:$volume<br>\n"); } mysql_close($con); ?>
その他の回答 (1)
- php504
- ベストアンサー率42% (926/2160)
回答No.2
mysql_fetch_arrayで返されるのは検索された結果セットの1行目の値で、配列で返されます。 for の判定式で $i < $row が数字と配列の比較になっているのでforループが終わらないのでしょう。 結果セットの行数が知りたい場合は $row = mysql_num_rows($result); とすれば期待通りの動作が得られると思います。
質問者
お礼
なるほど、そういうことなのですね。有難うございました。所用により家にしばらく不在だったため、お礼が遅くなってしまいました。申し訳ありません。
補足
回答有難うございました。ご指導頂いたwhile文を実行したところスムーズに動きました。データを全部表示するという目的はお蔭様で達することができました。 なお、参考のため、更にうかがいたいのですが、 > $i が定義されていないのですが、 というご指摘の通り、当初のスクリプトは次のように for を入れています。 <?php $con=mysql_connect(localhost,"root","root"); $selectdb=mysql_select_db("sales",$con); $sql="select * from sample"; $result=mysql_query($sql,$con); $row=mysql_fetch_array($result); for($i=0;$i<$row;$i++){ $price=mysql_result($result,$i,1); $volume=mysql_result($result,$i,2); echo("$price:$volume<br>\n"); } mysql_close($con); ?> これでパソコンがフリーズするのです。この文ではやはり拙いのは分かりましたが、この文について何かコメント頂ければ大変勉強になります。 mysql_fetch_array() と for を使うことが間違いなのでしょうか。