- ベストアンサー
データが追加されません
mysql2.23 + PHPのプログラムで あらかじめ次のようなテーブルを作っています。 CREATE TABLE metadata(id smallint unsigned not null auto_increment primary key, me_date datetime, me_info text, me_file varchar (50)); 次にPHPで $meta_server = "metadata"; $conn = mysql_connect("localhost","root","root"); とここまでは大丈夫なのですが、その後 $sql = "INSERT INTO metadata(me_date, me_info, me_file) VALUES( '".substr$table', '".$note."', '".$filename."');"; $db = mysql_db_query($meta_server,$sql); としてもデータがテーブルに入りません。 どこに問題があるのでしょうか? 誰かヒントをお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
$sqlのコーテーションの対応関係が崩れてしまってるように見受けられます。 前後のプログラムがどのようになっているのかわかりませんので、ichirafeさんが意図されているものとは違ってしまっているかもしれませんが、simpleに書き直すとこうなりますよね。 $sql = "INSERT INTO metadata(me_date, me_info, me_file) VALUES( '.substr$table', '.$note.', '.$filename.')"; 気になるのは格納される各変数の前後に"."がついていることなんですが、これって、実は連結するためにつけていたものだったりします? で、あれば、勝手に展開してくれますから、 $sql = "INSERT INTO metadata(me_date, me_info, me_file) VALUES('substr$table','$note','$filename')"; のようにしても大丈夫だと思いますよ。 いずれにせよ、#1の方が書かれているように"echo $sql;"で逐一確認しながらすすめた方がいいでしょうね。 頑張って下さい。
その他の回答 (1)
- rara_sun
- ベストアンサー率50% (271/539)
全くプログラムの知識なしなので、ヒントになるかどうかわかりませんが・・・。 私なら、こうするかな~ということでコメントします。 どこまでテストしているのかわからないので、 いきなり今回のプログラムをコーディングしたという 前提で話しをしますと・・。 私なら、まず、1つ1つのステータスが問題ないのか確認す。 例えば、mysql_connect。 これは、ちゃんと接続できているんだろうか?と考えます。ですから、接続だけのコードにして $conn の値を 実行直後に print します。 これが正しいと判断できたら・・ 次は、 $sql ="INSERT~"の部分・・。 これは、変数をバリバリ使ってますよね? これ、変数じゃなく、ちゃんとした値にしたらどうなんだろう?とか、私なら考えます。 例えば、 $sql = "insert into metadata(me_date, me_info, me_file) values(1,2,3)"; なんて具合です。 これがOKなら、変数を使うところを1つづつ増やします。 これは、$table、$note、$filenameのいづれかが原因かもという推測の元に考えたことです。 という具合なのですが・・・。 ヒントというよりアドバイス的な感じなりました・・。
お礼
お返事ありがとうございます。 ちょっと焦っていたので単純なところを見逃していたようです。 一つ一つやっていくべきでしたね。 ありがとうございました。
お礼
お礼が遅くなりました。ビンゴです! 自分自信ででややこしくしていたらしく $sql = "INSERT INTO metadata(me_date, me_info, me_file) VALUES('substr$table','$note','$filename')"; をそのまま貼り付けるだけで解決してしまいました。 これからの参考にしていきたいと思います。 ありがとうございました。