Annotation of embedaddon/php/ext/pdo/tests/pdo_016.phpt, revision 1.1.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>