Re: PDO returns all data as strings?!
| From: | Aziz Saleh | Date: | Tue, 04 Apr 2023 20:32:12 +0000 |
| Subject: | Re: PDO returns all data as strings?! | ||
| References: | 1 2 3 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-328181@lists.php.net to get a copy of this message | ||
One of the reasons why they are returned as string (and I think the main
reason) is that PHP has a limit to ints/doubles that is far much lower than
SQL. If they return int many people would have issues.
I would recommend that you just create your own "passthrough" class that
will set the type based on the schema (or list of columns you have in a
config), this would be harder if those columns are dynamic though.
On Tue, Apr 4, 2023 at 4:26 PM Yves Goergen <nospam.list@unclassified.de>
wrote:
> No, that doesn't change anything.
>
> Meanwhile I've tried out the SQLite3 classes and found that their API is
> very similar. I had almost no work adapting my code. These classes work
> fine and return the real data type, not a converted view of it. And it
> even allows resolving the SQL statement including bound parameter values
> which is helpful for debugging. I'll keep that.
>
> -Yves
>
>
> -------- Ursprüngliche Nachricht --------
> Von: Aziz Saleh <azizsaleh@gmail.com>
> Gesendet: Montag, 3. April 2023, 21:59 MESZ
> Betreff: PDO returns all data as strings?!
>
> Try setting this option and see if it helps:
>
> PDO::ATTR_STRINGIFY_FETCHES => false
>
> On Mon, Apr 3, 2023 at 3:31 PM Yves Goergen via php-general
> <php-general@lists.php.net
> <mailto:php-general@lists.php.net>> wrote:
>
> Hello,
>
> I just noticed a weird behaviour of PDO for my SQLite database and
> found
> a hint online. Just wanted to check here.
>
> Is it correct that PDO will return all queried values from the fetch
> method as string, no matter the actual data type? I couldn't find that
> notice by glancing over the documentation. (Such an unexpected note
> should be very well visible.)
>
> If that's the case, can it be fixed immediately (for PHP 7.4 and
> later)?
> Or what alternatives to PDO could I use for SQLite only? I need
> prepared
> statements and parameter binding.
>
> I know how SQLite handles data types, and it includes remembering the
> type that was given to it. If PHP/PDO then destroys it, it's of very
> limited use.
>
> My code looks like this:
>
> $ps = $this->connection->prepare('select * from table');
> $ps->execute();
> $record = $ps->fetch(PDO::FETCH_ASSOC);
>
> -Yves
>
>
>