http://st43a.sakura.ne.jp/tcs/
上記URLに質問ございます。phpにてMySQLのデータを表示するプログラムの不具合の質問です。
よろしくお願いいたします。
$result = mysql_query("SELECT * FROM uriage ORDER BY kingaku DESCLIMIT 3") or die ("ERROR!!");
上記の代わりに以下を使用してみてください。
$result = mysql_query("SELECT * FROM uriage ORDER BY kingaku DESC LIMIT 3") or die("SQLの送信に失敗しました。" . mysql_error() . "<br />\r\n");
あるいは以下のようにしても同じです。
エラーになった場合、SQLのどの辺りに問題があったのかを表示します。
$result = mysql_query("SELECT * FROM uriage ORDER BY kingaku DESC LIMIT 3"); if($result == false){ echo "SQLの送信に失敗しました。" . mysql_error() . "<br />\r\n"; exit; }
エラー出力の他には、データの確認をした方が良いと思います。
$uriageStr = $uriageStr."namae".$count."=".$data[0]."&kingaku".$count."=".$data[0]."&";
上記は、どこにどのデータが入っているか分からなかったのが原因かと思うのですが、そのような時は「var_dump($data);」などとして、中のデータを表示確認してみてください。。
また、せっかくmysql_fetch_arrayを使っているのですから、添字配列で取得するのではなく、連想配列で取得してもいいと思います。
以下のようにカラム名で取得できるので、こちらの方が簡単だと思います。
$uriageStr = $uriageStr."namae".$count."=".$data['namae']."&kingaku".$count."=".$data['kingaku']."&";
構文チェックについてですが、エディタでSQL文のエラーチェックまで可能な物はないかもしれませんね。
SQLに関しては、MySQL Query Browserを使用して事前にチェックしてもいいと思います。
今回少し触っただけですが、軽いしけっこう便利でいいと思います。
画像のように色分け表示されるので、間違ったSQLを書くとすぐに分かります。
※上が間違いありで、下が正しいSQLを入力した場合の表示です。
・[MySQLウォッチ]第9回 GUIでSQL文を作成できる新ツールMySQL Query Browser
http://itpro.nikkeibp.co.jp/members/ITPro/oss/20040729/147902/
※記事の時点ではバージョン1.0.4-alphaですが、現在のバージョンは1.2.17で、割と安定しているようです。
http://dev.mysql.com/downloads/gui-tools/5.0.html
※遷移先のページでそのまま「No thanks, just take me to the downloads!」をクリックすると、ユーザー登録をしなくてもダウンロードできます。
(FTPを選択→「Downloads」→「MySQLGUITools」)
※インストール不要なZIP版もあります。
※「MySQL Workbench」でもいいと思いますが、私はまだ使い方が良く分かりません。
(SQL DevelopmentがMySQL Query Browserに代わる機能です。)
他には、関数の色分け表示が可能なエディタを使用すると、ケアレスミスを防げると思います。
現在Eclipseでどちらのプラグインを使用しているのか分かりませんが一応・・・
PDTは関数は色分け表示しませんが、PHPeclipseでしたら、関数も色分け表示します。
Eclipseに拘らないのでしたら、PHPエディタという国産のフリーソフトも関数の色分け表示が可能です。
シンプルで使いやすいので、併用してもいいかもしれません。
http://phpspot.net/php/phpeditor.html
※Eclipseと同じで、「Ctrl+スペース」キーによる入力支援機能があります。
とりあえず気になったのは
$result = mysql_query("SELECT * FROM uriage ORDER BY kingaku DESCLIMIT 3");
DESCとLIMITの間にスペースが必要な気がするんですがDESC LIMIT 3ですよね?
参考になりました。ありがとうございました。
SQLの構文エラーじゃないでしょうか?
DESCLIMIT を DESC LIMITにしてみたらいかがでしょうか?
DESCとLIMITの間に半角スペースを入れます。
ありがとうございました。
mysql_fetch_array(): supplied argument is not a vailed MySQL result resource
mysql_fetch_arrayに渡された引数が正しくないって言ってる!!
$data = mysql_fetch_array($result);
mysql_fetch_array に何を渡しているかを見ると! $result!!
$result = mysql_query("SELECT * FROM uriage ORDER BY kingaku DESCLIMIT 3");
$result に値を代入している地点を捜索! ミス発見! DESCLIMIT じゃなくて DESC LIMIT !!
以上のような流れでミスを探します!! 後出しだから3000は無理かな?
今後は、正しい値が返ってきてるかを確認するようにしたほうがいいよ! 以下、一例!!
if($result = mysql_query("SELECT * FROM uriage ORDER BY kingaku DESC LIMIT 3")) {
$result = mysql_query("SELECT * FROM uriage ORDER BY kingaku DESC LIMIT 3") or die ("ERROR!!");
ありがとうございました。
SQL文
$result = mysql_query("SELECT * FROM uriage ORDER BY kingaku DESCLIMIT 3"); <|| の"DESC"と"LIMIT3"の間にブランクは入っていますか?
ありがとうございました。
SQL文に間違いがあります。
$result = mysql_query("SELECT * FROM uriage ORDER BY kingaku DESCLIMIT 3");
DESC LIMIT 3
の間違いではないでしょうか?
ありがとうございました。
mysql_fetch_array(): supplied argument is not a vailed MySQL result resource
mysql_fetch_arrayに渡された引数が正しくないって言ってる!!
$data = mysql_fetch_array($result);
mysql_fetch_array に何を渡しているかを見ると! $result!!
$result = mysql_query("SELECT * FROM uriage ORDER BY kingaku DESCLIMIT 3");
$result に値を代入している地点を捜索! ミス発見! DESCLIMIT じゃなくて DESC LIMIT !!
以上のような流れでミスを探します!! 後出しだから3000は無理かな?
今後は、正しい値が返ってきてるかを確認するようにしたほうがいいよ! 以下、一例!!
if($result = mysql_query("SELECT * FROM uriage ORDER BY kingaku DESC LIMIT 3")) {
$result = mysql_query("SELECT * FROM uriage ORDER BY kingaku DESC LIMIT 3") or die ("ERROR!!");
ありがとうございました。
$result = mysql_query("SELECT * FROM uriage ORDER BY kingaku DESCLIMIT 3") or die ("ERROR!!");
上記の代わりに以下を使用してみてください。
$result = mysql_query("SELECT * FROM uriage ORDER BY kingaku DESC LIMIT 3") or die("SQLの送信に失敗しました。" . mysql_error() . "<br />\r\n");
あるいは以下のようにしても同じです。
エラーになった場合、SQLのどの辺りに問題があったのかを表示します。
$result = mysql_query("SELECT * FROM uriage ORDER BY kingaku DESC LIMIT 3"); if($result == false){ echo "SQLの送信に失敗しました。" . mysql_error() . "<br />\r\n"; exit; }
エラー出力の他には、データの確認をした方が良いと思います。
$uriageStr = $uriageStr."namae".$count."=".$data[0]."&kingaku".$count."=".$data[0]."&";
上記は、どこにどのデータが入っているか分からなかったのが原因かと思うのですが、そのような時は「var_dump($data);」などとして、中のデータを表示確認してみてください。。
また、せっかくmysql_fetch_arrayを使っているのですから、添字配列で取得するのではなく、連想配列で取得してもいいと思います。
以下のようにカラム名で取得できるので、こちらの方が簡単だと思います。
$uriageStr = $uriageStr."namae".$count."=".$data['namae']."&kingaku".$count."=".$data['kingaku']."&";
構文チェックについてですが、エディタでSQL文のエラーチェックまで可能な物はないかもしれませんね。
SQLに関しては、MySQL Query Browserを使用して事前にチェックしてもいいと思います。
今回少し触っただけですが、軽いしけっこう便利でいいと思います。
画像のように色分け表示されるので、間違ったSQLを書くとすぐに分かります。
※上が間違いありで、下が正しいSQLを入力した場合の表示です。
・[MySQLウォッチ]第9回 GUIでSQL文を作成できる新ツールMySQL Query Browser
http://itpro.nikkeibp.co.jp/members/ITPro/oss/20040729/147902/
※記事の時点ではバージョン1.0.4-alphaですが、現在のバージョンは1.2.17で、割と安定しているようです。
http://dev.mysql.com/downloads/gui-tools/5.0.html
※遷移先のページでそのまま「No thanks, just take me to the downloads!」をクリックすると、ユーザー登録をしなくてもダウンロードできます。
(FTPを選択→「Downloads」→「MySQLGUITools」)
※インストール不要なZIP版もあります。
※「MySQL Workbench」でもいいと思いますが、私はまだ使い方が良く分かりません。
(SQL DevelopmentがMySQL Query Browserに代わる機能です。)
他には、関数の色分け表示が可能なエディタを使用すると、ケアレスミスを防げると思います。
現在Eclipseでどちらのプラグインを使用しているのか分かりませんが一応・・・
PDTは関数は色分け表示しませんが、PHPeclipseでしたら、関数も色分け表示します。
Eclipseに拘らないのでしたら、PHPエディタという国産のフリーソフトも関数の色分け表示が可能です。
シンプルで使いやすいので、併用してもいいかもしれません。
http://phpspot.net/php/phpeditor.html
※Eclipseと同じで、「Ctrl+スペース」キーによる入力支援機能があります。
丁寧な解説、ありがとうございました。大変参考になりました。
丁寧な解説、ありがとうございました。大変参考になりました。