2012-05-12 9 views
1

Iは、テーブルに値がこれが動作しないダイナミック入力私は動的にpostgresテーブルにNULLを挿入しますか?

$、$ bの(PHP変数)

$query = "UPDATE test set a=$a where b = $b"; 
pg_query($db, $query); 

から挿入され、この

CREATE TABLE test(a int, b int); 

ようなテーブルを持っています$ aが空の場合(つまり、ユーザーがテーブルからフォームフィールドの値を入力しない場合)私はこれをどう回避するのですか?

+0

'a = '$ a''を試しましたか? $ aが空の場合、空の値を挿入しようとします。あなたのテーブルがヌル値を受け入れるなら、それはうまくいくはずです。 –

+1

@FabrícioMatté: 'NULL'と* empty *' '' 'は非常に異なる値です。 –

+0

ありがとうございます。私はしばらくの間PgSQLで作業していないので、私の無知を赦してください。私はちょうど、PHPでフェッチされたときに、 'if(!$ value)'と比較すると、両方がfalseとして解析されることを意味しました。 –

答えて

1

$ aが空の場合、$queryは次のようになります。$aが空であり、その場合は、それを設定している場合

UPDATE test SET a=NULL where b = whatever 
3

テスト:

UPDATE test SET a= where b = whatever 

あなたが明示的にクエリ文字列にNULLを追加する必要があります〜null:

$a = ($a == '') ? 'NULL' : "'$a'"; 
$query = "UPDATE test set a=$a where b='$b'"; 

thを引用するのを忘れないでくださいe $b値は、引用するまでここでエラーを返していました。

NULLでない場合は、上記のチェックで$aに引用符を追加しました。したがって、$ aがNULL(空白)、整数または文字列のいずれかである場合に動作します。

+0

postgresでは、a = ''はエラーをスローします。明示的に$ a = nullに設定する必要がありますが、nullを動的に渡す方法はわかりません。私は引用符で 'ヌル'を渡すことができますが、nullだけではありません。 – pogo

+0

私は私の答えを編集しました。私はそれをテストするために私のPGサーバー上にテーブルをセットアップします。 –

+0

'b = '$ b''で$ bを引用するまで、エラーを返していました。今すぐ試してみてください。 –

関連する問題