[PHP-users 15177]Re: htmlフォームからphpでdbを操作できないのは?

Osamu Shigematsu m5issige @ mr.hitachi-medical.co.jp
2003年 5月 12日 (月) 10:27:48 JST


重松です。こんにちは。

> アキヨシさんの説明が、あなたがお持ちの本をみんなが持っているかのような説
> 明になっていることです。
> 本を持っている人はそこまでに書かれた手順が分かっているでしょうけども。

こういうケースって難しいですね。

本を持っている人には、ページ数だけ示せばいいし、そうでないなら、
ページ数だけではわからないので、ある程度の内容を書かないといけないけど、
コードには、著作権があるから、全部をメールに流すと、引用の限度を超える
可能性もあるし、コードを一部切り出して、動くものにできる人ならば、
そもそも、自分で解決してそうな問題だし。 ;-)

> > C:\Apache\htdocs\php配下に(table.htmlとselect.phpは)置きました。
> > http://localhost/php/table.html  ok テーブルの表示はできましたが。
> > http://localhost/php/select.php ×  データ(全件表示)ができませんでした。
> > 何故!
> htmlはDBと関係ないでしょうから当然表示されるでしょうね。
> そして、クエリの送信でエラーが出ているならその送信したクエリを書くべきで
> す。そうでないと何をしようとしてエラーが出たのか分かりません。

で、問題のある行の前、10 行くらいは、書いていただけると、
原因が把握できるかもしれませんね。

で、クエリですが、

	var_dump($query);

という行を、21 行の前にでも配置してみると、良いかもしれません。

普通に print, echo するよりも、得られる情報が多いです。

特に配列などは、print_r() と同じで、とても便利なので、
マニュアルで確認してみてください。

また、今回は、mysql_query() はこけるのがわかっていて、
そこから先は実行する必要がないので、そういうときには、

	var_dump($query);
	exit();

だとか、

	die("クエリ: $query");

のようにして、プログラムを停止することもできます。

あとは、fprintf() を使って、ファイルに書き出したりすると、
画面の出力とは別に実行結果をトレースすることもできると思います。

	 // パスなどは適切に変更してください
	$fp = fopen('/tmp/myLog.txt','a');
	fprintf($fp, "クエリ: %s\n", $query);
	fclose($fp);
# stderr でもよいかも。

あるいは、syslog を使うのも良いかもしれません。

なんか、もっとよさげなデバッグ方法がありましたら、ご紹介ください。

P.S.
細かなことですが、HTML メールになっていますし、
数字を○で囲んだ文字、ローマ数字、あるいは、(株) などは、
文字化けして読めない環境がありますから、使用しないようにしてください。

-- 
Osamu Shigematsu <m5issige @ mr.hitachi-medical.co.jp>



PHP-users メーリングリストの案内