1
0
mirror of https://github.com/php/php-src.git synced 2026-04-18 13:31:27 +02:00
Files
archived-php-src/ext/pdo_sqlite/tests/debugdumpparams_001.phpt
Nikita Popov caa710037e Rewrite PDO result binding
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 ;)
2020-12-22 15:56:34 +01:00

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