http://ryu669.sakura.ne.jp/qes1
上記にhtmlファイルがあります。ソースにtest1.htmlとtest2.phpがあります。
このtest1.htmlとtest2.phpをサーバーにアップしデータベースにnameとcomment、日時の登録をしようとしますが、日時は入りますが、nemeとcommentが登録
されません。文字化けも考慮して入力は半角英数で行いました。
nameはvarchar(40) , commentはtext 日時はtimestampのデータ型です。
作成PHPのバージョンはPHP4、データベースはPostgresql8.1, PHP5.3です。
文字コードはPostgresqlはUTF-8、PHP、htmlファイルはUTF-8にしました。携帯電話でも入力可能にしたいです。
今回データ表示用のphpファイルは省いてあります。確認はデータベースを直接見て確認しています。
どなたか原因のわかる方お願いします。
<html> <head> <title>insert</title> </head> <body bgcolor="#ffffff" text="#555555"> <?php $db_con = pg_connect("dbname=bbs1 port=5432 host=localhost user= password= "); if ($db_con == false){ print("接続できませんでした。"); exit; } $name = pg_escape_string($_POST['name']); //追加 $comment = pg_escape_string($_POST['comment']); //追加 $sql = "insert into bbs_01 (name, comment, w_time) values ('$name', '$comment', '".date("Y/m/d h:i:s")."')"; //sql文を$sqlにセット $rs = pg_exec($db_con, $sql); //$sqlの実行結果を$rsにセット if ($rs == false){ print("実行に失敗しました。"); exit; } print("<tt>書き込みを入力しました。</tt>"); pg_freeresult($rs); pg_close($db_con); ?> </body> </html>
<html> <head> <title>insert</title> </head> <body bgcolor="#ffffff" text="#555555"> <?php $db_con = pg_connect("dbname=bbs1 port=5432 host=localhost user= password= "); if ($db_con == false){ print("接続できませんでした。"); exit; } $name = pg_escape_string($_POST['name']); //追加 $comment = pg_escape_string($_POST['comment']); //追加 $sql = "insert into bbs_01 (name, comment, w_time) values ('$name', '$comment', '".date("Y/m/d h:i:s")."')"; //sql文を$sqlにセット $rs = pg_exec($db_con, $sql); //$sqlの実行結果を$rsにセット if ($rs == false){ print("実行に失敗しました。"); exit; } print("<tt>書き込みを入力しました。</tt>"); pg_freeresult($rs); pg_close($db_con); ?> </body> </html>
おそらくregister_globalsがOffになっていることが御希望の動作とならない原因です。
http://www.php.net/manual/ja/ini.core.php#ini.register-globals
php.ini に register_globals=On を設定することで解決すると思われます。
ただし、register_globalsを有効にするのはセキュリティ上好ましくないので、$_POST等を利用してコードを書きなおした方がよりベターでしょう。
コメント(1件)
もうひとつ別の質問にレス書いてください。