mirror of
https://github.com/php/php-src.git
synced 2026-04-18 13:31:27 +02:00
Instead of requiring the type to be determined in advance by the describer function and then requiring get_col to return a buffer of appropriate type, allow get_col to return an arbitrary zval. See UPGRADING.INTERNALS for a more detailed description of the change. This makes the result fetching simpler, more efficient and more flexible. The general possibility already existed via the special PDO_PARAM_ZVAL type, but the usage was very inconvenient and/or inefficient. Now it's possible to easily implement behavior like "return int if it fits, otherwise string" and to avoid any kind of complex management of temporary buffers. This also fixes bug #40913 (our second highest voted bug of all time, for some reason). PARAM_LOB result bindings will now consistently return a stream resource, independently of the used database driver. I've tried my best to update all PDO drivers for this change, but some of the changes may be broken, as I cannot test or even build some of these drivers (in particular PDO dblib and PDO oci). Fixes are appreciated -- a working CI setup would be even more appreciated ;)
38 lines
619 B
PHP
38 lines
619 B
PHP
--TEST--
|
|
Testing PDOStatement::debugDumpParams() with bound params
|
|
--SKIPIF--
|
|
<?php
|
|
if (!extension_loaded('pdo_sqlite')) print 'skip not loaded';
|
|
?>
|
|
--FILE--
|
|
<?php
|
|
|
|
$db = new PDO('sqlite::memory:');
|
|
|
|
$x= $db->prepare('select :a, :b, ?');
|
|
$x->bindValue(':a', 1, PDO::PARAM_INT);
|
|
$x->bindValue(':b', 'foo');
|
|
$x->bindValue(3, 1313);
|
|
var_dump($x->debugDumpParams());
|
|
|
|
?>
|
|
--EXPECT--
|
|
SQL: [16] select :a, :b, ?
|
|
Params: 3
|
|
Key: Name: [2] :a
|
|
paramno=-1
|
|
name=[2] ":a"
|
|
is_param=1
|
|
param_type=2
|
|
Key: Name: [2] :b
|
|
paramno=-1
|
|
name=[2] ":b"
|
|
is_param=1
|
|
param_type=3
|
|
Key: Position #2:
|
|
paramno=2
|
|
name=[0] ""
|
|
is_param=1
|
|
param_type=3
|
|
NULL
|