前回指摘があったプレースホルダのやり方に沿ってないと思われます。
普通にSQLを記述したあとに 埋め込みようの変数をセットするようにすればいいでしょう。
▽2
●
うぃんど ●2000ポイント ベストアンサー |
まず最初に確認しておきますが、
pg-query-paramsはphp5.1.0以降にしかありませんのでphp4では動きません。
http://jp2.php.net/manual/ja/function.pg-query-params.php
php4、5のどちらでも動くコードを書きたいならば、
PEARのMDB2を使うことなどで対応することになりますが、
過去のバージョンに囚われて遅くなる方法を選択するのは賢くはありませんので、
開発環境にもphp5を用意しましょう(本題とは外れるので詳細は書きませんが、
1つのパソコン上でphp4と5を並行利用することは可能です)
http://pear.php.net/manual/ja/package.database.mdb2.php
>サーバーで動作確認しましたが・・・
あなたがサーバーにアップしたというソースコードがしめされていないので、
あくまでも想像の域を出るものではありませんが、
$_REQUESTで得られるはずの値が期待通りではないのだと思われます。
以前行っていたように、送信された内容を確認したものを$nameや$titleなどに入れるようにして、
それらすべてがOKならばpg_query_paramsで$nameなどをPostgreSQLに登録するという流れにしたほうが良いでしょう。
セキュリティの観点からも、$_REQUESTの値をそのまま使うのは良くありません。
pg_query_paramsで対処するのはPostgreSQLへの攻撃であって、
その中に例えばHTMLタグやjavascriptなどを埋め込まれると、
ブラウザ側でトラブルとなる間接攻撃になるからです。
$rs = pg_query_params( $db_con, "insert into treebbs (name, title, comment, w_time, email, display) values ($1, $2, $3, $4, $5, $6)", array($name, $title, $comment, date("Y/m/d h:i:s"), $email, 1)) or die(pg_last_error());
ログを見ろといわれてもちょっと難しいかもしれませんので、
エラー出力or die(pg_last_error())も付けておくと良いでしょう。
雑談:
printは関数ではないので(かっこ)は不要です。
(かっこ)は少しでも少ないほうが見やすくて、見やすいコードはデバッグもしやすいです。
1.動くけれども推奨できない書き方 print("<font color='#ff11ff'><tt><b>RE</b>:</tt></font>\n"); 2.print構文としては正解だけどHTMLの構文がおかしい書き方 print "<font color='#ff11ff'><tt><b>RE</b>:</tt></font>\n"; 3.古いHTMLの書き方 print '<font color="#ff11ff"><tt><b>RE</b>:</tt></font>' . "\n"; 4.現代風の書き方(FONTタグは非推奨) print '<tt style="color:#ff11ff"><b>RE</b>:</tt>' . "\n";