Re: Fwd: [PHP-BUG] Bug #73234 [NEW]: emulated statementslet value dictate parameter type

From: 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

« previous php.internals (#96216) next »