dポイントプレゼントキャンペーン実施中!

PHPである携帯用アプリを作成しています。

ユーザ登録処理画面でパソコン上からDBにインサートすると成功するのに携帯からだとDBエラーになります。

インサートする項目は10項目あります。
エラー文は以下です。
Warning: pg_exec(): Query failed: ERROR: parser: parse error at ornear "," at character27 . in /~path名(セキュリティ上書きません)

他の処理でインサート項目が1つだとインサートが成功します。

原因がどうしてもわかりません。
Postgresqlの規約があるのでしょうか?それとも携帯での規約でしょうか?
よろしくお願いします。

A 回答 (4件)

手元に環境がないので、よく覚えてませんが、


片方の SQL 文がたぶんおかしいような気がします。

Postgres の方の log で違いがないかどうかを
チェックされた方がいいかと思います。

“27 文字辺り”だとすると、
「values(」の“(”の辺りなのかなぁ。。。

どういう変数を拾ってきているのかわかりませんが、
何か変数が抜け落ちていたりしませんか?
    • good
    • 0
この回答へのお礼

数々のアドバイスありがとうございます。
原因がつかめました。

携帯にはレジスター機能がなく
ある変数だけには値が入ってませんでした。
(PCだと成功するわけです。)

その変数はプライマリキーの一つなので
NULLがはいってしまいDBエラーがでたと
考えられます。

根気よくデバック作業をしていればよかったですね。
ほんとにありがとうございました。

お礼日時:2003/08/07 06:49

文字コードはどちらも EUC ですか?



あと「character27」ってどういう箇所ですか?

この回答への補足

ありがとうございます。
$sql = "insert into g_user values($num,'$groupi','$gnamae','$gnicc','$gadd','$gbirth','$gkuse','$getc','','');";

というインサートのSQL文を使用しています。
character27がどれにあたるかわかりかねます。

よろしくお願いします。

補足日時:2003/08/06 13:46
    • good
    • 0

pg_exec()(本当はpg_queryを利用した方がいいのですが)で発行しているSQL文を書いてみてください。

この回答への補足

ご質問ありがとうございます。

$sql = "insert into g_user values($num,'$groupi','$gnamae','$gnicc','$gadd','$gbirth','$gkuse','$getc','','');";

$res = pg_exec($conn,$sql);
if(pg_cmdtuples($res) == 0){
 print("<h2 bgcolor=#FFCC00>登録失敗</h2><br>");
 print("<a href='toptop.php?num=$_POST[num]       &adnam=$_POST[adnam]'>戻る</a>\n");
exit;
}

です。
pg_queryの方がよろしいでしょうか?

補足日時:2003/08/06 13:40
    • good
    • 0

ウェブや携帯では、HTTP のGET コマンドでの入力ですか?



httpd のログに違いはありますか?

この回答への補足

そうですね、携帯ではメソッドがGETしか受け付けないという会社もありましたのでGETで統一さしています。

httpdのログに違いはありませんでした。
問題はDBの方かと推測していますが間違ってますで
しょうか?

よろしくお願いします。

補足日時:2003/08/06 09:10
    • good
    • 0

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