summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXinchen Hui <laruence@gmail.com>2016-06-28 11:11:39 +0800
committerXinchen Hui <laruence@gmail.com>2016-06-28 11:11:39 +0800
commit86732b4ea0dc0ce0a98096467eea5bb0d2eab1d1 (patch)
treebfd41a27fba6f081604d6ac10a59e29b2b427815
parentc73a2f7f45fc4ad6bf45f5f6929606725f285cd7 (diff)
parentec82c6b4e1048e5c207799fb4424e9728eb20173 (diff)
downloadphp-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.c6
-rw-r--r--ext/sqlite3/tests/bug70628.phpt55
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)
+}