]> granicus.if.org Git - php/commitdiff
- Fixed bug #45798 (sqlite3 doesn't notice if variable was bound)
authorFelipe Pena <felipe@php.net>
Tue, 12 Aug 2008 13:32:30 +0000 (13:32 +0000)
committerFelipe Pena <felipe@php.net>
Tue, 12 Aug 2008 13:32:30 +0000 (13:32 +0000)
ext/sqlite3/sqlite3.c
ext/sqlite3/tests/bug45798.phpt [new file with mode: 0644]

index 30bca6e2fa51b064844c1f55277bf7828ddf112e..2e1578b2b8f566772e6e0cea157818a3a284fcdf 100644 (file)
@@ -1096,6 +1096,7 @@ PHP_METHOD(sqlite3stmt, execute)
                        /* If the ZVAL is null then it should be bound as that */
                        if (Z_TYPE_P(param->parameter) == IS_NULL) {
                                sqlite3_bind_null(stmt_obj->stmt, param->param_number);
+                               zend_hash_move_forward(stmt_obj->bound_params);
                                continue;
                        }
 
diff --git a/ext/sqlite3/tests/bug45798.phpt b/ext/sqlite3/tests/bug45798.phpt
new file mode 100644 (file)
index 0000000..1beacc4
--- /dev/null
@@ -0,0 +1,32 @@
+--TEST--
+Bug #45798 (sqlite3 doesn't notice if variable was bound)
+--SKIPIF--
+<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
+--FILE--
+<?php
+
+require_once(dirname(__FILE__) . '/new_db.inc');
+
+$db->exec('CREATE TABLE test (time INTEGER, id STRING)');
+
+$db->exec("INSERT INTO test (time, id) VALUES (" . time() . ", 'a')");
+$db->exec("INSERT INTO test (time, id) VALUES (" . time() . ", 'b')");
+
+$stmt = $db->prepare("SELECT * FROM test WHERE id = ? ORDER BY id ASC");
+
+$stmt->bindParam(1, $foo, SQLITE3_TEXT);
+$results = $stmt->execute();
+
+while ($result = $results->fetchArray(SQLITE3_NUM)) {
+       var_dump($result);
+}
+
+$results->finalize();
+
+$db->close();
+
+print "done";
+
+?>
+--EXPECT--
+done