mysql:2465
From: (moeru) <<moeru@xxxxxxxxxx>>
Date: Mon, 11 Sep 2000 19:59:17 +0900
Subject: [mysql 02465] Re: エラーの意味
2000/09/10 09:01:57 +0900にIshida Akio <iakio@xxxxxxxxxx>さんに頂いた 「[mysql 02461] Re: エラーの意味」への返事です。 モエルです。 こんにちは、石田さん(^^) >> Warning: Unable to jump to row 0 on MySQL result index 4 in >> /home/httpd/html/sell/item.php3 on line 50 >> >> このindex 4の意味は何でしょうか? >> >> >> 上記のエラーは、以下のような処理の時によく起きます。 >> >> $result = mysql_query ("SELECT name FROM item WHERE itemid = '$itemid' limit 1"); >> $itemname = mysql_result($result, 0, "name"); > >4 は、 $result の値だと思います。 >エラーの意味としては、 mysql_num_rows($result) した値が 0 より >小さかった、ということでしょう。 なるほど。。 mysql_num_rows($result)は、書かないで mysql_result($result, 0, "name");ってしてるので PHPは、自動的にmysql_num_rows($result)して エラーを返してるのかも知れないですね。 >> これを以下のように直すと直るのですが >> >> $item_info = mysql_fetch_array($result); >> $itemname = $item_info["name"]; >> >> 何で、$itemname = mysql_result($result, 0, "name"); >> だとだめなのか理解していません。。。 > >うーん。 >ただ、 mysql_query() が 1 行も返さなかった場合、 >mysql_result() は、上記のエラーになりますが、 >mysql_fetch_array() は空の配列を返すだけで、エラーにはならないのでは? >また、空の array に対して、 $item_info["name"] とアクセスすることも、 >エラーにはなりません。 mysql_fetch_array() では、空じゃなくて、ちゃんと値を返してくれます。 なので、謎だったわけです。。 mysql_resultを使うときは、 mysql_result($result, $n, "name"); とかのループで行を取ってくるときには問題なかったので 1行だけ結果が欲しいときは、mysql_fetch_array()とかにすることにしました。 >とりあえず、 mysql_result() を呼ぶ時は、 >あらかじめ mysql_num_rows() で、行数を確認してからの方がいいかも。 そうですね。TESTの時くらいは、行数を確認したほうがいいですね。 ># あと、参考までに php のバージョンを教えて下さい。 はい。 MySQL3.23.21-beta PHP3.0.12jp-beta4 です。 今後もどうぞ宜しくお願いしますm(__)m モエル
2455 2000-09-07 22:19 [<moeru@xxxxxxxxxx> ] エラーの意味 2457 2000-09-08 15:31 ┣["Y. Tsutsui" <tutui@] 2458 2000-09-08 19:56 ┃┗[<moeru@xxxxxxxxxx> ] 2459 2000-09-08 20:04 ┃ ┗["Y. Tsutsui" <tutui@] 2460 2000-09-08 20:32 ┃ ┗[<moeru@xxxxxxxxxx> ] 2461 2000-09-10 09:01 ┗[Ishida Akio <iakio@x] -> 2465 2000-09-11 19:59 ┗[<moeru@xxxxxxxxxx> ]