diff options
author | Christoph M. Becker <cmbecker69@gmx.de> | 2018-07-26 13:15:19 +0200 |
---|---|---|
committer | Christoph M. Becker <cmbecker69@gmx.de> | 2018-07-26 13:15:19 +0200 |
commit | ed7e3bc70a89a0838a5b7e44928cbd65aec50bb1 (patch) | |
tree | def9f623a82f74cc19ce27ca7ba55ea4760f8711 | |
parent | 40bd84d3e3d3fefdc16c10319e35fcfea359054a (diff) | |
download | php-git-ed7e3bc70a89a0838a5b7e44928cbd65aec50bb1.tar.gz |
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.
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | ext/sqlite3/sqlite3.c | 2 | ||||
-rw-r--r-- | ext/sqlite3/tests/bug76665.phpt | 19 |
3 files changed, 24 insertions, 1 deletions
@@ -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-- +<?php +if (!extension_loaded('sqlite3')) die('skip sqlite3 extension not available'); +?> +--FILE-- +<?php +$db = new SQLite3(':memory:'); +$db->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=== |