Re: Fwd: [PHP-BUG] Bug #73234 [NEW]: emulated statementslet value dictate parameter type
| From: | Christoph M. Becker | Date: | Tue, 04 Oct 2016 14:33:12 +0000 |
| Subject: | Re: Fwd: [PHP-BUG] Bug #73234 [NEW]: emulated statementslet value dictate parameter type | ||
| References: | 1 2 3 4 5 6 7 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-96221@lists.php.net to get a copy of this message | ||
On 04.10.2016 at 16:20, Matteo Beccati wrote:
> Hi,
>
> On 04/10/2016 16:15, Adam Baratz wrote:
>>>
>>>>> 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.
>>
>>
>> That's correct, but you can enable emulated prepares for whichever driver.
>> A less confusing example might've been inserting :null into a nullable INT
>> column and verifying that NULL was stored.
>
> That's not ture. If memory serves, emulated prepares are only available
> supported by the mysql and pgsql pdo drivers.
If that is so, the docs would be in error, e.g.
<http://www.php.net/manual/en/pdo.setattribute.php>
states:
| PDO::ATTR_EMULATE_PREPARES […]
| Use this setting to force PDO to either always emulate prepared
| statements (if TRUE), […]
--
Christoph M. Becker