Re: PDO returns all data as strings?!

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 3 Apr 2023 21:31:29 +0200
"Yves Goergen via php-general" <php-general@xxxxxxxxxxxxx> 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

I can't speak to how PDO can be made to return certain types of data.
However, I can say that for the C API of SQLite (which I'm sure PHP
relies upon), the default return type for results is strings. In C, you
must add an additional set of calls to get SQLite data into integers,
floats, etc. That said, with PHP's fluid typing, and its ability to
cast to different types, you can achieve the result you want, albeit
with more tedium.

It's been my experience that PHP/PDO does in fact return strings by
default. However, I never found this to be an issue, particularly if
you're echoing values back to the web page. And yes, PDO is absolutely
the best way to address a SQLite database (or any other for that
matter).

Paul


-- 
Paul M. Foster
Personal Blog: http://noferblatz.com
Company Site: http://quillandmouse.com
Software Projects: https://gitlab.com/paulmfoster



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux