Re: Fwd: [PHP-BUG] Bug #73234 [NEW]: emulated statementslet value dictate parameter type
| From: | Christoph M. Becker | Date: | Tue, 04 Oct 2016 14:08:28 +0000 |
| Subject: | Re: Fwd: [PHP-BUG] Bug #73234 [NEW]: emulated statementslet value dictate parameter type | ||
| References: | 1 2 3 4 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-96216@lists.php.net to get a copy of this message | ||
On 04.10.2016 at 01:13, Lester Caine wrote:
> On 03/10/16 22:20, Rowan Collins wrote:
>
>> On 3 October 2016 19:11:52 BST, Adam Baratz <adambaratz@php.net> wrote:
>>
>>>> Test script:
>>>> ---------------
>>>> $db = new PDO(...);
>>>>
>>>> $stmt = $db->prepare("SELECT :null");
>>>> $stmt->bindValue(':null', null, PDO::PARAM_NULL);
>>>> $stmt->execute();
>>>> var_dump($stmt->fetchAll()); // NULL
>
>> Well, I'm pretty sure Postgres won't be affected either way, because its type
>> system is such that you can't prepare a query where the types of parameters can't be
>> decided yet. A query like this simply gives an error.
>
> Firebird, oracle and mysql would have exactly the same problem. The
> prepare SQL script is invalid so prepare fails. If it works for dblib
> then I would consider THAT the bug. Parameters can only be assigned to
> fields identified in the prepared SQL. In this case :null has nothing to
> identify what it is to be prepared to populate.
This is about *emulated* prepares, and AFAIK that means that the
database will never see the prepared statement.
--
Christoph M. Becker