diff options
author | Matteo Beccati <mbeccati@php.net> | 2016-07-10 13:04:49 +0200 |
---|---|---|
committer | Matteo Beccati <mbeccati@php.net> | 2016-07-10 14:33:56 +0200 |
commit | 219ebcb68984a0af524336b165a849781ee65758 (patch) | |
tree | 2b5654ec2d5e866691ffe57599fbb08bb548ad08 | |
parent | 51d19891a418754df6e1a8f7c7312e6bc20ac449 (diff) | |
download | php-git-219ebcb68984a0af524336b165a849781ee65758.tar.gz |
Fixed bug #70313 PDO statement fails to throw exception
-rw-r--r-- | NEWS | 5 | ||||
-rw-r--r-- | ext/pdo_pgsql/pgsql_statement.c | 2 | ||||
-rw-r--r-- | ext/pdo_pgsql/tests/bug70313.phpt | 37 |
3 files changed, 42 insertions, 2 deletions
@@ -9,10 +9,13 @@ PHP NEWS . Fixed bug #71144 (Segmentation fault when using cURL with ZTS). (maroszek at gmx dot net) -- Filter +- Filter: . Fixed bug #71745 (FILTER_FLAG_NO_RES_RANGE does not cover whole 127.0.0.0/8 range). (bugs dot php dot net at majkl578 dot cz) +- PDO_pgsql: + . Fixed bug #70313 (PDO statement fails to throw exception). (Matteo) + 21 Jul 2016, PHP 5.6.24 - Core: diff --git a/ext/pdo_pgsql/pgsql_statement.c b/ext/pdo_pgsql/pgsql_statement.c index ff34e48579..a6e6405a1c 100644 --- a/ext/pdo_pgsql/pgsql_statement.c +++ b/ext/pdo_pgsql/pgsql_statement.c @@ -280,7 +280,7 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data * case PDO_PARAM_EVT_EXEC_PRE: if (!stmt->bound_param_map) { - return 0; + return 1; } if (!S->param_values) { S->param_values = ecalloc( diff --git a/ext/pdo_pgsql/tests/bug70313.phpt b/ext/pdo_pgsql/tests/bug70313.phpt new file mode 100644 index 0000000000..14c3b7bfcc --- /dev/null +++ b/ext/pdo_pgsql/tests/bug70313.phpt @@ -0,0 +1,37 @@ +--TEST-- +PDO PgSQL Bug #70313 (PDO statement fails to throw exception) +--SKIPIF-- +<?php +if (!extension_loaded('pdo') || !extension_loaded('pdo_pgsql')) die('skip not loaded'); +require dirname(__FILE__) . '/config.inc'; +require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc'; +PDOTest::skip(); +?> +--FILE-- +<?php +require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc'; +$db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt'); +$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + +$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); +try { + $stmt = $db->prepare(");"); + + $stmt->execute([1]); +} catch (PDOException $e) { + var_dump($e->getCode()); +} + +$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true); +try { + $stmt = $db->prepare(");"); + + $stmt->execute([1]); +} catch (PDOException $e) { + var_dump($e->getCode()); +} + +?> +--EXPECT-- +string(5) "42601" +string(5) "42601" |