Re: empty form fields, NULLS, quoting, postgreSQL inserts into

Поиск
Список
Период
Сортировка
От Peter Clarke
Тема Re: empty form fields, NULLS, quoting, postgreSQL inserts into
Дата
Msg-id 3E8484D3.30008@jingo.com
обсуждение исходный текст
Ответ на empty form fields, NULLS, quoting, postgreSQL inserts into date, interval fields...  (Dan Jewett <danjewett@mac.com>)
Ответы Re: empty form fields, NULLS, quoting, postgreSQL inserts  (Dan Jewett <danjewett@mac.com>)
Список pgsql-php
Dan Jewett wrote:
> Greetings all,
>
> I realize this revisits an old topic, but I haven't been able to put
> together a definitive answer to my problem by checking other sources.
>
> Assuming that that the postgres table fields are configured to allow
> NULLs, and I wish to allow certain form fields to remain unfilled....
>
> I'm having trouble getting NULLs into date/time fields and interval
> fields.
>
> I've gotten this far:
>
> $trk_length = $_POST['trk_length'];
> if (empty($trk_length))                    //or if($trk_length == '')
>     $trk_length = NULL;
>
> or
>
> $length_str = $_POST['trk_length'];
>     if (empty($length_str))
>         $trk_length = NULL;
>     else $trk_length = $length_str;
>
> The insert:
>
> $result = pg_query($conn, "INSERT INTO track (field1, field2,
> trk_length) VALUES ('$var1', '$var2', '$trk_length')");
>

Only use quotes if you have a value:

  $length_str = $_POST['trk_length'];
      if (empty($length_str))
          $trk_length = NULL;
      else $trk_length = "'".$length_str."'";

  $result = pg_query($conn, "INSERT INTO track (field1, field2,
  trk_length) VALUES ('$var1', '$var2', $trk_length)");

> This results in a "bad external representation ''." error for the
> insert.  If I use double quotes, ie. $trk_length = "NULL"; and remove
> the single quotes from the $trk_length variable in the insert
> statement, the insert succeeds.  But now, if $trk_length is not empty,
> the insert fails with a parse error on the : character in my interval
> string.
>
> The same is true for trying to insert NULLS into a date or time field
> in postgres.  I believe I have a quoting problem, but I can't figure it
> out. Setting the default values of the fields to NULL has not seemed to
> help.
>
> Can someone lend some expertise on this?  I've read of others people
> struggling with this.  If we had a good answer to this maybe we good
> get it into the interactive docs?
>
> Thanks,
> Dan
>
>
> _________________
> Visit Eva, Anne, and Dan at: http://www.thenormalfamily.net.
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
>
>


В списке pgsql-php по дате отправления:

Предыдущее
От: Rod Kreisler
Дата:
Сообщение: Re: empty form fields, NULLS, quoting, postgreSQL
Следующее
От: Dan Jewett
Дата:
Сообщение: Re: empty form fields, NULLS, quoting, postgreSQL inserts