Annotation of embedaddon/php/ext/pdo/tests/pdo_016.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: PDO Common: PDO::FETCH_BOUND
! 3: --SKIPIF--
! 4: <?php # vim:ft=php
! 5: if (!extension_loaded('pdo')) die('skip');
! 6: $dir = getenv('REDIR_TEST_DIR');
! 7: if (false == $dir) die('skip no driver');
! 8: if (!strncasecmp(getenv('PDOTEST_DSN'), 'oci', strlen('oci'))) die('skip not relevant for oci driver - cannot reexecute after closing cursors without reparse');
! 9: require_once $dir . 'pdo_test.inc';
! 10: PDOTest::skip();
! 11: ?>
! 12: --FILE--
! 13: <?php
! 14: if (getenv('REDIR_TEST_DIR') === false) putenv('REDIR_TEST_DIR='.dirname(__FILE__) . '/../../pdo/tests/');
! 15: require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc';
! 16: $db = PDOTest::factory();
! 17:
! 18: if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') {
! 19: $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
! 20: }
! 21:
! 22: $db->exec('CREATE TABLE test(idx int NOT NULL PRIMARY KEY, txt VARCHAR(20))');
! 23: $db->exec('INSERT INTO test VALUES(0, \'String0\')');
! 24: $db->exec('INSERT INTO test VALUES(1, \'String1\')');
! 25: $db->exec('INSERT INTO test VALUES(2, \'String2\')');
! 26:
! 27: $stmt1 = $db->prepare('SELECT COUNT(idx) FROM test');
! 28: $stmt2 = $db->prepare('SELECT idx, txt FROM test ORDER by idx');
! 29:
! 30: $stmt1->execute();
! 31: var_dump($stmt1->fetchColumn());
! 32: $stmt1 = null;
! 33:
! 34: $stmt2->execute();
! 35: $cont = $stmt2->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_UNIQUE);
! 36: var_dump($cont);
! 37:
! 38: echo "===WHILE===\n";
! 39:
! 40: $stmt2->bindColumn('idx', $idx);
! 41: $stmt2->bindColumn('txt', $txt);
! 42: $stmt2->execute();
! 43:
! 44: while($stmt2->fetch(PDO::FETCH_BOUND)) {
! 45: var_dump(array($idx=>$txt));
! 46: }
! 47:
! 48: echo "===ALONE===\n";
! 49:
! 50: $stmt3 = $db->prepare('SELECT txt FROM test WHERE idx=:inp');
! 51: $stmt3->bindParam(':inp', $idx); /* by foreign name */
! 52:
! 53: $stmt4 = $db->prepare('SELECT idx FROM test WHERE txt=:txt');
! 54: $stmt4->bindParam(':txt', $txt); /* using same name */
! 55:
! 56: foreach($cont as $idx => $txt)
! 57: {
! 58: var_dump(array($idx=>$txt));
! 59: var_dump($stmt3->execute());
! 60:
! 61: if ($idx == 0) {
! 62: /* portability-wise, you may only bindColumn()s
! 63: * after execute() has been called at least once */
! 64: $stmt3->bindColumn('txt', $col1);
! 65: }
! 66: var_dump($stmt3->fetch(PDO::FETCH_BOUND));
! 67: $stmt3->closeCursor();
! 68:
! 69: var_dump($stmt4->execute());
! 70: if ($idx == 0) {
! 71: /* portability-wise, you may only bindColumn()s
! 72: * after execute() has been called at least once */
! 73: $stmt4->bindColumn('idx', $col2);
! 74: }
! 75: var_dump($stmt4->fetch(PDO::FETCH_BOUND));
! 76: $stmt4->closeCursor();
! 77: var_dump(array($col2=>$col1));
! 78: }
! 79:
! 80: echo "===REBIND/SAME===\n";
! 81:
! 82: $stmt4->bindColumn('idx', $col1);
! 83:
! 84: foreach($cont as $idx => $txt)
! 85: {
! 86: var_dump(array($idx=>$txt));
! 87: var_dump($stmt3->execute());
! 88: var_dump($stmt3->fetch(PDO::FETCH_BOUND));
! 89: $stmt3->closeCursor();
! 90: var_dump($col1);
! 91: var_dump($stmt4->execute());
! 92: var_dump($stmt4->fetch(PDO::FETCH_BOUND));
! 93: $stmt4->closeCursor();
! 94: var_dump($col1);
! 95: }
! 96:
! 97: echo "===REBIND/CONFLICT===\n";
! 98:
! 99: $stmt2->bindColumn('idx', $col1);
! 100: $stmt2->bindColumn('txt', $col1);
! 101: $stmt2->execute();
! 102:
! 103: while($stmt2->fetch(PDO::FETCH_BOUND))
! 104: {
! 105: var_dump($col1);
! 106: }
! 107:
! 108:
! 109: ?>
! 110: --EXPECT--
! 111: string(1) "3"
! 112: array(3) {
! 113: [0]=>
! 114: string(7) "String0"
! 115: [1]=>
! 116: string(7) "String1"
! 117: [2]=>
! 118: string(7) "String2"
! 119: }
! 120: ===WHILE===
! 121: array(1) {
! 122: [0]=>
! 123: string(7) "String0"
! 124: }
! 125: array(1) {
! 126: [1]=>
! 127: string(7) "String1"
! 128: }
! 129: array(1) {
! 130: [2]=>
! 131: string(7) "String2"
! 132: }
! 133: ===ALONE===
! 134: array(1) {
! 135: [0]=>
! 136: string(7) "String0"
! 137: }
! 138: bool(true)
! 139: bool(true)
! 140: bool(true)
! 141: bool(true)
! 142: array(1) {
! 143: [0]=>
! 144: string(7) "String0"
! 145: }
! 146: array(1) {
! 147: [1]=>
! 148: string(7) "String1"
! 149: }
! 150: bool(true)
! 151: bool(true)
! 152: bool(true)
! 153: bool(true)
! 154: array(1) {
! 155: [1]=>
! 156: string(7) "String1"
! 157: }
! 158: array(1) {
! 159: [2]=>
! 160: string(7) "String2"
! 161: }
! 162: bool(true)
! 163: bool(true)
! 164: bool(true)
! 165: bool(true)
! 166: array(1) {
! 167: [2]=>
! 168: string(7) "String2"
! 169: }
! 170: ===REBIND/SAME===
! 171: array(1) {
! 172: [0]=>
! 173: string(7) "String0"
! 174: }
! 175: bool(true)
! 176: bool(true)
! 177: string(7) "String0"
! 178: bool(true)
! 179: bool(true)
! 180: string(1) "0"
! 181: array(1) {
! 182: [1]=>
! 183: string(7) "String1"
! 184: }
! 185: bool(true)
! 186: bool(true)
! 187: string(7) "String1"
! 188: bool(true)
! 189: bool(true)
! 190: string(1) "1"
! 191: array(1) {
! 192: [2]=>
! 193: string(7) "String2"
! 194: }
! 195: bool(true)
! 196: bool(true)
! 197: string(7) "String2"
! 198: bool(true)
! 199: bool(true)
! 200: string(1) "2"
! 201: ===REBIND/CONFLICT===
! 202: string(7) "String0"
! 203: string(7) "String1"
! 204: string(7) "String2"
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>