Re: DB, prepare() and NULL values
| From: | Justin Patrin | Date: | Mon, 03 Apr 2006 17:44:04 +0000 |
| Subject: | Re: DB, prepare() and NULL values | ||
| References: | 1 2 | Groups: | php.pear.general |
| Request: | Send a blank email to pear-general+get-23520@lists.php.net to get a copy of this message | ||
On 4/3/06, Justin Patrin <papercrane@gmail.com> wrote:
> On 4/3/06, Chris Boget <chris.boget@wild.net> wrote:
> > All morning I've been trying to somehow work it so that prepare() recognizes
> > and accounts for NULL values. Such that if I set a variable as NULL and
> > NULL being a valid value for a field in the table, it would prepare the
> > query so that it generates it using NULL.
> >
> > For example, say I had the following:
> >
> > $sth = $db->prepare('INSERT INTO numbers (number) VALUES (?)');
> > $res =& $db->execute($sth, 1);
> >
> > PEAR DB would generate a query looking like:
> >
> > INSERT INTO numbers (number) VALUES ('1')
> >
> > Now, let's say that the number column was set to allow null values. Here is
> > the same code, slighly altered:
> >
> > $sth = $db->prepare('INSERT INTO numbers (number) VALUES (?)');
> > $res =& $db->execute($sth, NULL);
> >
> > Now the generated query would look like:
> >
> > INSERT INTO numbers (number) VALUES ('')
> >
> > when I need it to look like:
> >
> > INSERT INTO numbers (number) VALUES (NULL)
> >
> > I've tried changing the placeholder from a ? to a ! but all that did was
> > make it so that there was no value set making the query look like:
> >
> > INSERT INTO numbers (number) VALUES ()
> >
> > would would cause an error, particularly if there was more than just 1
> > column set up in the query. And changing the placeholder to a & only
> > resulted in getting back an error object saying something about insufficient
> > permissions.
> >
> > So I'm curious, is what I am trying to do even possible? I've looked at the
> > source code in DB_common and it appears that I'm SOL. Has anyone else had
> > any success in doing what I'm trying to do?
> >
>
> As a workaround....try not preparing fields which need to be set to
> NULL perhaps?
>
Oh, and I also suggest looking into MDB2, perhaps it can do what you want.
--
Justin Patrin