statements).
- Fixed bug #41717 (imagepolygon does not respect thickness). (Pierre)
- Fixed bug #41711 (NULL temporary lobs not supported in OCI8).
(Chris Jones, Tony)
+- Fixed bug #41698 (float parameters truncated to integer in prepared
+ statements). (Ilia)
- Fixed bug #41686 (Omitting length param in array_slice not possible).
(Ilia)
- Fixed bug #41685 (array_push() fails to warn when next index is already
}
if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_STR && param->max_value_len <= 0 && ! ZVAL_IS_NULL(param->parameter)) {
- convert_to_string(param->parameter);
+ if (Z_TYPE_P(param->parameter) == IS_DOUBLE) {
+ char *p;
+ int len = spprintf(&p, 0, "%F", Z_DVAL_P(param->parameter));
+ ZVAL_STRINGL(param->parameter, p, len, 0);
+ } else {
+ convert_to_string(param->parameter);
+ }
} else if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_INT && Z_TYPE_P(param->parameter) == IS_BOOL) {
convert_to_long(param->parameter);
} else if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_BOOL && Z_TYPE_P(param->parameter) == IS_LONG) {
--- /dev/null
+--TEST--
+PDO MySQL Bug #41698 (float parameters truncated to integer in prepared statements)
+--SKIPIF--
+<?php
+if (!extension_loaded('pdo') || !extension_loaded('pdo_mysql')) 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__) . '/config.inc';
+require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
+$db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt');
+
+setlocale(LC_ALL, "de","de_DE","de_DE.ISO8859-1","de_DE.ISO_8859-1","de_DE.UTF-8");
+
+$db->exec('CREATE TABLE test(floatval DECIMAL(8,6))');
+$db->exec('INSERT INTO test VALUES(2.34)');
+$value=4.56;
+$stmt = $db->prepare('INSERT INTO test VALUES(?)');
+$stmt->execute(array($value));
+var_dump($db->query('SELECT * from test')->fetchAll(PDO::FETCH_ASSOC));
+?>
+--EXPECT--
+array(2) {
+ [0]=>
+ array(1) {
+ ["floatval"]=>
+ string(8) "2.340000"
+ }
+ [1]=>
+ array(1) {
+ ["floatval"]=>
+ string(8) "4.560000"
+ }
+}
\ No newline at end of file