スレッド表示 | フラット表示〕 全トピック 920 件中 620 番目 次≫ ≪前

POSTGRESQLへのデータ入力について

created: 2004-05-07 16:52 | modified: 2004-05-08 00:53 | reply: 6

[1559] POSTGRESQLへのデータ入力について

user: ドルコン | created: 2004-05-07 16:52
PHP初めて間もない初心者ですが、よろしくお願いします。

今、PHPで入力フォームを作りそこからPOSTGRESQLへデータを格納するスクリプトをかいています。

POSTGRESQLのテーブルは
| a_name | a_tele | p_key |

という形でしてP_keyには自動連番を設定しています。
POSTGRESQLの方からデータが入るのを確認した後、PHPで入力が出来るようにと

a_nameにcreate_nameという名前
a_teleにcreate_teleという名前を付与しPOSTで値を受けそれをデータベースに入れるようにしたのですが
エラーも出ず、データ入力も出来ておらずでどこに原因があるのかわかりません。

スクリプトは下記です。

<?php
$name = $_POST[create_name];
$tele = $_POST[create_tele];

@$con = pg_connect("dbname=createdb")
if($con == false){
print("データベースへの接続に失敗した模様。\n<br>");
exit;
}
if($name=="")
{
echo "入力必須欄(名前)が記入されていません。\n";
pg_freeresult($ret);
pg_close();
exit;
}

if($tele=="")
{
echo "入力必須欄(電話)が入力されていません。\n";
pg_freeresult($ret);
pg_close();
exit;
}

$ret = pg_exec($reg);
if($ret==false)
{
echo "テーブルへの書き込みに失敗しました。";
pg_freeresult($ret);
pg_close();
exit;
}

$reg = "insert into test_DB(a_name,a_tele) values ('$name','$te
le')";
$ret = pg_exec($reg);

$reg = "commit";
$ret = pg_exec($reg);
pg_freeresult($ret);
pg_close();
exit;
?>

なにか気づいた事等、教えていただければ幸いです。
なおphpは4.3、postgresqlは7.2、OSはfreeBSDです。
よろしくお願いします。
reply: 1562 返信 編集 削除

[1562] 予想

user: ゆうじ | created: 2004-05-07 18:23
postgresql を扱ったことがないので予想です。

$name = $_POST[create_name];
$tele = $_POST[create_tele];

この部分を、

$name = $_POST['create_name'];
$tele = $_POST['create_tele'];

こう書くとどうでしょう。
(自信はない。)


あと、

$ret = pg_exec($reg);
if($ret==false)
{
echo "テーブルへの書き込みに失敗しました。";
pg_freeresult($ret);
pg_close();
exit;
}

$reg = "insert into test_DB(a_name,a_tele) values ('$name','$tele')";
$ret = pg_exec($reg);

↑この部分、↓こう入れ替えたほうがよいような。

$reg = "insert into test_DB(a_name,a_tele) values ('$name','$tele')";
$ret = pg_exec($reg);

// 不要
// $ret = pg_exec($reg);

if($ret==false)
{
echo "テーブルへの書き込みに失敗しました。";
pg_freeresult($ret);
pg_close();
exit;
}
Parent: 1559  reply: 1564 1568 返信 編集 削除

[1564] Re: 予想

user: ドルコン | created: 2004-05-07 18:59
ゆうじさん、早速のご返信ありっがとうございます。

今、書き換えてみたのですがやはり症状変わらずで、エラー出ず、データ入力されておらずの真っ白な画面が表示されてしまいます。
実はフォントが白だったとかそういうことも無く。

ちょっとまたいろいろ替えてみて何かわかりましたら、報告したいですが引き続きなにか情報ございましたらご教授お願いします。
Parent: 1562  reply: 1565 返信 編集 削除

[1565] 変数チェック

user: ゆうじ | created: 2004-05-07 20:18
現象変りませんでしたか。残念。

ならば、順番に変数の値を表示させて
確認するところからでしょうか。
Parent: 1564  reply: 1566 返信 編集 削除

[1566] Re: 変数チェック

user: ドルコン | created: 2004-05-07 21:06
たびたび申し訳ないです.

早速ですが変数はきチンと表示することが出来ました。

で、@$con = pg_connect("dbname=createdb")
の@を抜いてみたところ
上記の部分にエラーが出てしまいました。

さらに現在格納されているデータを一覧表示するスクリプトを試しに書いてみたんですが
それもまた
$con = pg_connect("dbname=createdb")
でPHPエラーがでてしまうです。
Parent: 1565  reply: 1567 返信 編集 削除

[1567] 飛び入りで恐縮です。

user: シロウ ホームページ | created: 2004-05-07 21:38
途中からですみません。
PHP.ringでお世話になっております。

$con = pg_connect("host=localhost port=5432 dbname=createdb user=postgres");
ホストとユーザー名を追加してみてはいかがでしょうか?

気になる点ですがクローズの際は、コネクションリソースを引数にするようです。
pg_close($con);
pg_close()は不要でcommit命令も要らないようです。
http://jp2.php.net/manual/ja/function.pg-close.php


--テスト環境--
ゆうじさんの修正版で動作できました。
OS: WindowsXP
Postgres: PostgreSQL on Cygwin

以上です。
Parent: 1566  返信 編集 削除

[1568] yeeeeeeeees!!!!

user: ドルコン | created: 2004-05-08 00:53
できました!!!

ゆうじさんしろうさんありがとうございました。

私は出来ませんでしたがシロウさんが動作確認済みとのことでしたので
phpとapacheを再コンパイルし、その後postgresをiオプションをつけ立ち上げ

$conの部分を
$con = pg_connect("host=localhost dbname=createdb user=postgres password=****");
に変更

その後何故かpg_freeresult($ret);でエラーが出たのでそこを削除したら出来ました。

1つのわからない箇所がいろいろと派生してしまい時間がかかってしまいましたが
とてもいい勉強になったと思います。
ありがとうございました。
Parent: 1562  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 620 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑