diff options
Diffstat (limited to 'ext/pgsql')
-rw-r--r-- | ext/pgsql/pgsql.c | 2 | ||||
-rw-r--r-- | ext/pgsql/tests/bug46408.phpt | 26 |
2 files changed, 27 insertions, 1 deletions
diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c index f90ba78780..dcc2c28692 100644 --- a/ext/pgsql/pgsql.c +++ b/ext/pgsql/pgsql.c @@ -1736,7 +1736,7 @@ PHP_FUNCTION(pg_query_params) } else { zval tmp_val = **tmp; zval_copy_ctor(&tmp_val); - convert_to_string(&tmp_val); + convert_to_cstring(&tmp_val); if (Z_TYPE(tmp_val) != IS_STRING) { php_error_docref(NULL TSRMLS_CC, E_WARNING,"Error converting parameter"); zval_dtor(&tmp_val); diff --git a/ext/pgsql/tests/bug46408.phpt b/ext/pgsql/tests/bug46408.phpt new file mode 100644 index 0000000000..bf84290907 --- /dev/null +++ b/ext/pgsql/tests/bug46408.phpt @@ -0,0 +1,26 @@ +--TEST-- +Bug #46408 (Locale number format settings can cause pg_query_params to break with numerics) +--SKIPIF-- +<?php +require_once('skipif.inc'); +if (false === setlocale(LC_ALL, 'hr_HR.utf-8', 'hr_HR')) { + echo "skip Locale hr_HR.utf-8 not present"; +} +?> +--FILE-- +<?php + +require_once('config.inc'); + +$dbh = pg_connect($conn_str); +setlocale(LC_ALL, 'hr_HR.utf-8', 'hr_HR'); +echo 3.5.PHP_EOL; +pg_query_params("SELECT $1::numeric", array(3.5)); +pg_close($dbh); + +echo "Done".PHP_EOL; + +?> +--EXPECTF-- +3,5 +Done |