アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは、
現在、php5とpostgresql8でプログラムを行っています。
それで、
$sql = "INSERT INTO t_hoge (name) VALUES('hogesan')";
pg_exec($sql)
と、テーブルにデータを入れているんですが、
エラーはでないのに何故かデータがテーブルにインサートできません。
また、アップデートで編集もできません。
しかし、SELECTで既に入力されているデータを読んでprint等で表示させると普通にデータは取れています。
また、telnet等で直接postgresに
hoge=> INSERT INTO t_hoge (name) VALUES('hogesan');
と入力するとデータが挿入できます。

なにが問題なんでしょうか。
権限が問題なのでしょうか。
ちなみにテーブル作成するときは
CREATE TABLE t_hoge (
name TEXT PRIMARY KEY,
info TEXT
);
としています。

なにか思い当たる節があれば助言していただきたいのですが。

A 回答 (2件)

何かしらのエラーが出てるんじゃないでしょうか。


pg_execの直前で、

error_reporting(E_ALL);
ini_set("display_errors", 1);
pg_exec($sql);


こんな風にしてみてもエラーが表示されないでしょうか?

これでエラーが出ないのであれば、

echo $sql;

として、SQL文が正しいか見てみた方が良いと思います。

この回答への補足

上記のことを試しましたが、エラーはでてないようです。
まったく記述的に問題ないのに、権限も問題ないのに、なぜかデータが書き変わらない・・・。
なにか、正常な動作で無効にする機能って・・・。

--------------------------------------
で、
すいません。
自己解決しました(--;)

なにも考えずに先人が作ったものを使用していたのですが、
一番最後のほうに・・・

pg_exec('rollback;');
Σ(´Д`;)!?
noooooooo

お騒がせしました。

というか、
自己解決した際などに自分の質問のしたにまとめみたいな形で知識として残せればいいのに人の返信にしか返信できないって不便ですね。

補足日時:2008/03/06 11:53
    • good
    • 0

ちゃんとデータベースに接続してます?


pg_connect

あとpg_execは使わないで
pg_querryに変えた方がいいですよ。

この回答への補足

select でデータは取れるので
connectはできているようです。

軽く調べただけでは、
pg_execとpg_querryの違いがいまいち分かりませんでした。
まぁ、クエリーだけ実行するか、sql系の処理ならなんでも実行するかの違いでしょうか?

補足日時:2008/03/06 11:48
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!