From: Christoph M. Becker Date: Thu, 26 Jul 2018 11:15:19 +0000 (+0200) Subject: Fix #76665: SQLite3Stmt::bindValue() with SQLITE3_FLOAT doesn't juggle X-Git-Tag: php-7.1.21RC1~4 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ed7e3bc70a89a0838a5b7e44928cbd65aec50bb1;p=php Fix #76665: SQLite3Stmt::bindValue() with SQLITE3_FLOAT doesn't juggle We need to ensure that a zval IS_DOUBLE before we access it as such. In this case we apply common type juggling to do so. --- diff --git a/NEWS b/NEWS index f3bc056b38..87402d9dec 100644 --- a/NEWS +++ b/NEWS @@ -13,6 +13,10 @@ PHP NEWS - PDO_Firebird: . Fixed bug #76488 (Memory leak when fetching a BLOB field). (Simonov Denis) +- SQLite3: + . Fixed #76665 (SQLite3Stmt::bindValue() with SQLITE3_FLOAT doesn't juggle). + (cmb) + - Standard: . Fixed bug #68553 (array_column: null values in $index_key become incrementing keys in result). (Laruence) diff --git a/ext/sqlite3/sqlite3.c b/ext/sqlite3/sqlite3.c index 40406eeafc..6894089e41 100644 --- a/ext/sqlite3/sqlite3.c +++ b/ext/sqlite3/sqlite3.c @@ -1562,7 +1562,7 @@ PHP_METHOD(sqlite3stmt, execute) break; case SQLITE_FLOAT: - /* convert_to_double(parameter);*/ + convert_to_double(parameter); sqlite3_bind_double(stmt_obj->stmt, param->param_number, Z_DVAL_P(parameter)); break; diff --git a/ext/sqlite3/tests/bug76665.phpt b/ext/sqlite3/tests/bug76665.phpt new file mode 100644 index 0000000000..0e1de136f7 --- /dev/null +++ b/ext/sqlite3/tests/bug76665.phpt @@ -0,0 +1,19 @@ +--TEST-- +Bug #76665 (SQLite3Stmt::bindValue() with SQLITE3_FLOAT doesn't juggle) +--SKIPIF-- + +--FILE-- +exec("CREATE TABLE foo (bar REAL)"); +$stmt = $db->prepare("INSERT INTO foo VALUES (:bar)"); +$stmt->bindValue(':bar', 17, SQLITE3_FLOAT); +$stmt->execute(); +var_dump($db->querySingle("SELECT bar FROM foo LIMIT 1")); +?> +===DONE=== +--EXPECT-- +float(17) +===DONE===