From: Matteo Beccati Date: Sun, 10 Jul 2016 11:04:49 +0000 (+0200) Subject: Fixed bug #70313 PDO statement fails to throw exception X-Git-Tag: php-7.1.0beta1~137^2~1^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=219ebcb68984a0af524336b165a849781ee65758;p=php Fixed bug #70313 PDO statement fails to throw exception --- diff --git a/NEWS b/NEWS index 1fcf2ee74d..282f20d725 100644 --- a/NEWS +++ b/NEWS @@ -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-- + +--FILE-- +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"