diff options
author | Xinchen Hui <laruence@gmail.com> | 2016-06-28 11:11:39 +0800 |
---|---|---|
committer | Xinchen Hui <laruence@gmail.com> | 2016-06-28 11:11:39 +0800 |
commit | 86732b4ea0dc0ce0a98096467eea5bb0d2eab1d1 (patch) | |
tree | bfd41a27fba6f081604d6ac10a59e29b2b427815 | |
parent | c73a2f7f45fc4ad6bf45f5f6929606725f285cd7 (diff) | |
parent | ec82c6b4e1048e5c207799fb4424e9728eb20173 (diff) | |
download | php-git-86732b4ea0dc0ce0a98096467eea5bb0d2eab1d1.tar.gz |
Merge branch 'PHP-7.0' of git.php.net:/php-src into PHP-7.0
* 'PHP-7.0' of git.php.net:/php-src:
Fix the fix for #72403 on nl2br
Update NEWS
Update NEWS
Fix #70628: Clearing bindings on an SQLite3 statement doesn't work
5.5.38 now
-rw-r--r-- | ext/sqlite3/sqlite3.c | 6 | ||||
-rw-r--r-- | ext/sqlite3/tests/bug70628.phpt | 55 |
2 files changed, 61 insertions, 0 deletions
diff --git a/ext/sqlite3/sqlite3.c b/ext/sqlite3/sqlite3.c index 741a6ad0c2..9436c158b5 100644 --- a/ext/sqlite3/sqlite3.c +++ b/ext/sqlite3/sqlite3.c @@ -1333,6 +1333,12 @@ PHP_METHOD(sqlite3stmt, clear) RETURN_FALSE; } + if (stmt_obj->bound_params) { + zend_hash_destroy(stmt_obj->bound_params); + FREE_HASHTABLE(stmt_obj->bound_params); + stmt_obj->bound_params = NULL; + } + RETURN_TRUE; } /* }}} */ diff --git a/ext/sqlite3/tests/bug70628.phpt b/ext/sqlite3/tests/bug70628.phpt new file mode 100644 index 0000000000..3d807baaa8 --- /dev/null +++ b/ext/sqlite3/tests/bug70628.phpt @@ -0,0 +1,55 @@ +--TEST-- +Bug #70628 (Clearing bindings on an SQLite3 statement doesn't work) +--SKIPIF-- +<?php +if (!extension_loaded('sqlite3')) die('skip'); ?> +--FILE-- +<?php +$db = new SQLite3(':memory:'); + +$db->exec("CREATE TABLE Dogs (Id INTEGER PRIMARY KEY, Breed TEXT, Name TEXT, Age INTEGER)"); + +$sth = $db->prepare("INSERT INTO Dogs (Breed, Name, Age) VALUES (:breed,:name,:age)"); + +$sth->bindValue(':breed', 'canis', SQLITE3_TEXT); +$sth->bindValue(':name', 'jack', SQLITE3_TEXT); +$sth->bindValue(':age', 7, SQLITE3_INTEGER); +$sth->execute(); + +$sth->clear(); +$sth->reset(); + +$sth->bindValue(':breed', 'russel', SQLITE3_TEXT); +$sth->bindValue(':age', 3, SQLITE3_INTEGER); +$sth->execute(); + +$res = $db->query('SELECT * FROM Dogs'); +while (($row = $res->fetchArray(SQLITE3_ASSOC))) { + var_dump($row); +} +$res->finalize(); + +$sth->close(); +$db->close(); +?> +--EXPECT-- +array(4) { + ["Id"]=> + int(1) + ["Breed"]=> + string(5) "canis" + ["Name"]=> + string(4) "jack" + ["Age"]=> + int(7) +} +array(4) { + ["Id"]=> + int(2) + ["Breed"]=> + string(6) "russel" + ["Name"]=> + NULL + ["Age"]=> + int(3) +} |