]> granicus.if.org Git - php/commitdiff
- Test the colon is optional in binding
authorMarcus Boerger <helly@php.net>
Fri, 22 Jul 2005 14:27:35 +0000 (14:27 +0000)
committerMarcus Boerger <helly@php.net>
Fri, 22 Jul 2005 14:27:35 +0000 (14:27 +0000)
ext/pdo/tests/pdo_016a.phpt [new file with mode: 0755]

diff --git a/ext/pdo/tests/pdo_016a.phpt b/ext/pdo/tests/pdo_016a.phpt
new file mode 100755 (executable)
index 0000000..34d626a
--- /dev/null
@@ -0,0 +1,198 @@
+--TEST--
+PDO Common: PDO_FETCH_BOUND w/o :
+--SKIPIF--
+<?php # vim:ft=php
+if (!extension_loaded('pdo')) die('skip');
+$dir = getenv('REDIR_TEST_DIR');
+if (false == $dir) die('skip no driver');
+require_once $dir . 'pdo_test.inc';
+PDOTest::skip();
+?>
+--FILE--
+<?php
+require getenv('REDIR_TEST_DIR') . 'pdo_test.inc';
+$db = PDOTest::factory();
+
+$db->exec('CREATE TABLE test(idx int NOT NULL PRIMARY KEY, txt VARCHAR(20))');
+$db->exec('INSERT INTO test VALUES(0, \'String0\')');
+$db->exec('INSERT INTO test VALUES(1, \'String1\')');
+$db->exec('INSERT INTO test VALUES(2, \'String2\')');
+
+$stmt1 = $db->prepare('SELECT COUNT(idx) FROM test');
+$stmt2 = $db->prepare('SELECT idx, txt FROM test ORDER by idx');
+
+$stmt1->execute();
+var_dump($stmt1->fetchColumn());
+$stmt1 = null;
+
+$stmt2->execute();
+$cont = $stmt2->fetchAll(PDO_FETCH_COLUMN|PDO_FETCH_UNIQUE);
+var_dump($cont);
+
+echo "===WHILE===\n";
+
+$stmt2->bindColumn('idx', $idx);
+$stmt2->bindColumn('txt', $txt);
+$stmt2->execute();
+
+while($stmt2->fetch(PDO_FETCH_BOUND)) {
+       var_dump(array($idx=>$txt));
+}
+
+echo "===ALONE===\n";
+
+$stmt3 = $db->prepare('SELECT txt FROM test WHERE idx=:inp'); 
+$stmt3->bindParam('inp', $idx); /* by foreign name */
+
+$stmt4 = $db->prepare('SELECT idx FROM test WHERE txt=:txt'); 
+$stmt4->bindParam('txt', $txt);  /* using same name */
+
+foreach($cont as $idx => $txt)
+{
+       var_dump(array($idx=>$txt));
+       var_dump($stmt3->execute());
+
+       if ($idx == 0) {
+               /* portability-wise, you may only bindColumn()s
+                * after execute() has been called at least once */
+               $stmt3->bindColumn('txt', $col1);
+       }
+       var_dump($stmt3->fetch(PDO_FETCH_BOUND));
+       $stmt3->closeCursor();
+
+       var_dump($stmt4->execute());
+       if ($idx == 0) {
+               /* portability-wise, you may only bindColumn()s
+                * after execute() has been called at least once */
+               $stmt4->bindColumn('idx', $col2);
+       }
+       var_dump($stmt4->fetch(PDO_FETCH_BOUND));
+       $stmt4->closeCursor();
+       var_dump(array($col2=>$col1));
+}
+
+echo "===REBIND/SAME===\n";
+
+$stmt4->bindColumn('idx', $col1);
+
+foreach($cont as $idx => $txt)
+{
+       var_dump(array($idx=>$txt));
+       var_dump($stmt3->execute());
+       var_dump($stmt3->fetch(PDO_FETCH_BOUND));
+       $stmt3->closeCursor();
+       var_dump($col1);
+       var_dump($stmt4->execute());
+       var_dump($stmt4->fetch(PDO_FETCH_BOUND));
+       $stmt4->closeCursor();
+       var_dump($col1);
+}
+
+echo "===REBIND/CONFLICT===\n";
+
+$stmt2->bindColumn('idx', $col1);
+$stmt2->bindColumn('txt', $col1);
+$stmt2->execute();
+
+while($stmt2->fetch(PDO_FETCH_BOUND))
+{
+       var_dump($col1);
+}
+
+
+?>
+--EXPECT--
+string(1) "3"
+array(3) {
+  [0]=>
+  string(7) "String0"
+  [1]=>
+  string(7) "String1"
+  [2]=>
+  string(7) "String2"
+}
+===WHILE===
+array(1) {
+  [0]=>
+  string(7) "String0"
+}
+array(1) {
+  [1]=>
+  string(7) "String1"
+}
+array(1) {
+  [2]=>
+  string(7) "String2"
+}
+===ALONE===
+array(1) {
+  [0]=>
+  string(7) "String0"
+}
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+array(1) {
+  [0]=>
+  string(7) "String0"
+}
+array(1) {
+  [1]=>
+  string(7) "String1"
+}
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+array(1) {
+  [1]=>
+  string(7) "String1"
+}
+array(1) {
+  [2]=>
+  string(7) "String2"
+}
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+array(1) {
+  [2]=>
+  string(7) "String2"
+}
+===REBIND/SAME===
+array(1) {
+  [0]=>
+  string(7) "String0"
+}
+bool(true)
+bool(true)
+string(7) "String0"
+bool(true)
+bool(true)
+string(1) "0"
+array(1) {
+  [1]=>
+  string(7) "String1"
+}
+bool(true)
+bool(true)
+string(7) "String1"
+bool(true)
+bool(true)
+string(1) "1"
+array(1) {
+  [2]=>
+  string(7) "String2"
+}
+bool(true)
+bool(true)
+string(7) "String2"
+bool(true)
+bool(true)
+string(1) "2"
+===REBIND/CONFLICT===
+string(7) "String0"
+string(7) "String1"
+string(7) "String2"