diff options
Diffstat (limited to 'ext/sqlite3/tests/bug77051.phpt')
-rw-r--r-- | ext/sqlite3/tests/bug77051.phpt | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/ext/sqlite3/tests/bug77051.phpt b/ext/sqlite3/tests/bug77051.phpt new file mode 100644 index 0000000000..98e45ae88a --- /dev/null +++ b/ext/sqlite3/tests/bug77051.phpt @@ -0,0 +1,84 @@ +--TEST-- +Bug #77051 SQLite3::bindParam memory bug when missing ::reset call +--SKIPIF-- +<?php require_once(__DIR__ . '/skipif.inc'); ?> +--FILE-- +<?php + +$db = new SQLite3(':memory:'); +$db->enableExceptions(true); + +$stmt = $db->prepare('SELECT :a, :b, ?;'); + +$a = 42; +$stmt->bindParam(':a', $a, SQLITE3_INTEGER); +$stmt->bindValue(':b', 'php'); +$stmt->bindValue(':b', 'PHP'); +$stmt->bindValue(3, 424242); + +echo "Execute statement\n"; +var_dump($res = $stmt->execute()); + +echo "Statement result\n"; +var_dump($res->fetchArray(SQLITE3_NUM)); + +echo "Change binded param to wrong type\n"; +$a = 'TEST'; + +echo "Execute statement\n"; +var_dump($res = $stmt->execute()); + +echo "Statement result\n"; +var_dump($res->fetchArray(SQLITE3_NUM)); + +echo "Change binded values\n"; +$a = 5252552; +$stmt->bindValue(':b', 'TEST'); +$stmt->bindValue(3, '!!!'); + +echo "Execute statement\n"; +var_dump($res = $stmt->execute()); + +echo "Statement result\n"; +var_dump($res->fetchArray(SQLITE3_NUM)); + +?> +--EXPECTF-- +Execute statement +object(SQLite3Result)#3 (0) { +} +Statement result +array(3) { + [0]=> + int(42) + [1]=> + string(3) "PHP" + [2]=> + int(424242) +} +Change binded param to wrong type +Execute statement +object(SQLite3Result)#4 (0) { +} +Statement result +array(3) { + [0]=> + int(0) + [1]=> + string(3) "PHP" + [2]=> + int(424242) +} +Change binded values +Execute statement +object(SQLite3Result)#3 (0) { +} +Statement result +array(3) { + [0]=> + int(5252552) + [1]=> + string(4) "TEST" + [2]=> + string(3) "!!!" +}
\ No newline at end of file |