• ベストアンサー

PostgreSQLに書き込むことが出来ない

環境→Windows XP Home Edition Apache→Apache 2.0.59 PostgreSQL→PostgreSQL8.1.6 PHP→PHP4.4.4 DBに書き込もうとしていますがなかなか上手くできません。 <?php //データベースに接続する $conn = pg_pconnect("user=postgres password=grjtf dbname=mytbl"); //データベースに接続出来るかチェック if(!$conn) { //エラーメッセージ echo "An error occured.\n"; exit; } else { //接続成功メッセージ print "DB(mytbl)に接続しました。<br>"; } //データベースに接続し、mytblからidとnameを取り出す $result = pg_query($conn,"SELECT id,name FROM mytbl"); //データベース(mytbl)からidとnameを取得する if (!$result) { //エラーメッセージ echo "An error occured.\n"; exit; } else { //接続成功メッセージ print "idとnameを取得しました。<br>"; } //データベースmytblに書き込む if(isset($_POST["action"]) && $_POST["sign"] == '書き込み') { //名前とスコアが何も書かれていなかった場合 if($_POST["id"] && $_POST["name"]) { //データベースに書き込む $sql="INSERT INTO mytbl(id,name) VALUES('$id','$name')"; pg_query($conn,$sql); //成功メッセージ print "DB(mytbl)に書き込みました。<br><br>"; } else { //エラーメッセージ print "書き込めませんでした。<br><br>"; } }

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

  • ベストアンサー
  • shogo0809
  • ベストアンサー率47% (25/53)
回答No.1

どう「うまくできない」のかはわかりませんが憶測で $sql="INSERT INTO mytbl(id,name) VALUES('$id','$name')"; ↓ $sql="INSERT INTO mytbl(id,name) VALUES('{$_POST['id']}','{$_POST['name']}')"; $id, $nameという変数はregister_globalsがOnでないと設定されません。 PHP4.4.4ではregister_globalsはデフォルトでOffです。 もし的はずれだったら 「どういう結果を期待しているのか」 「期待しない結果としてどのような結果が起きているのか」 「エラーメッセージは表示されないか、表示されるとしたらどんな内容か」 「結果はどうやって確認したのか」 あたりを説明してもらえると回答しやすいです。

grj328
質問者

お礼

shogo0890さん、解答ありがとうございます。 shogo0890さんの >$sql="INSERT INTO mytbl(id,name) VALUES('{$_POST['id']}','{$_POST['name']}')"; をやってみたところデータベースに上手く書き込むことが出来ました。 php.iniファイルを見てみたところ register_globals = off になっていました。 丁寧な解答本当にありがとうございました。

その他の回答 (1)

  • TA-HT81S
  • ベストアンサー率39% (72/184)
回答No.2

私も、どう「うまくいかない」のかわからないので確認ですが、 DBのコネクションは成功していますか? GRANT ALL ON mytbl TO Apacheのユーザ; は実行していますか? ここでいうApacheのユーザとは、nobodyかapacheだと思います。

grj328
質問者

お礼

TA-HT81Sさん、解答ありがとうございます。 質問内容の文字が少し限られていたので、いろいろと省いて しまった質問の投げ方をしてしまいました。 すいませんでした。 No1さんの解答のお陰で、上手くDBに書き込むことができました。

関連するQ&A