• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MAX値が取得できない)

MySQLデータベースからMAX値を取得できないエラー

このQ&Aのポイント
  • MySQLデータベースからMAX値を取得する際にエラーが発生しています。
  • getSelect関数を使用してmax(key)を取得しているが、エラーとなる。
  • 他の構文では問題なく動作するが、MAXやAVGなどの集計関数がうまく動作しない。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

#1の別名、#2の予約語の両方を反映しましたか? 式の結果を参照する場合、一般的には別名を付けて参照します。 式 [[as] 別名] といった指定方法になります。 今回の場合は、例えば別名を列と同じ key という名前にしたいなら select max(`key`) as `key` from ・・・ というように、別名を付けましたか? 表名、列名、それらの別名が、予約語と被っていたり、特殊記号を使う場合などで、MySQLでは「`」(バッククォート)で囲みます。

choei
質問者

お礼

何度もおつきあいありがとうございました。 何とかご指摘のところの修正で解決に至りました。 keyが予約語とは知りませんでした 大変お世話になりました。 やっと前へ進めます。

その他の回答 (2)

回答No.2

key は予約語なので、`key` のように「`」(バッククォート)で囲んでください。 http://dev.mysql.com/doc/refman/5.1/ja/reserved-words.html

choei
質問者

お礼

ありがとうございます。 keyが予約語とは知りませんでした。 しかし、`でも'でも囲んでみたのですが、 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in とでます。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

$result[result]=mysql_query($query,$this->connect); を $result[result]=mysql_query($query,$this->connect) or die(mysql_error()); としてデバッグしてみてください また、"max(key)"を投げているけど"max(key) AS max"などと しないと名前でアクセスできないでしょ?

choei
質問者

お礼

ありがとうございます。 >"max(key) AS max"などとしないと名前でアクセスできないでしょ? はい、最初は付けていたのですが、とりあえず何が悪いか分からなかったので、削って削ってとりあえずエラーの原因を探してました (削ってエラーが出なかったら削った部分に原因ありで、出たら別のところかなと) で、ご指摘頂いたコードを追加してみたところ次のようなエラーとなりました。(下はAS maxを追加したコードです) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'key) AS max from main' at line 1 意味がよく分かりません。 AS maxを省略した形で実行すると 'key) AS max from main'のところが'key) from main'となっていただけです 記述とversionがあわないといっているのでしょうか?よくわかりません。 現在のサーバーはMySQL5.0.51aです。

関連するQ&A

専門家に質問してみよう