Annotation of embedaddon/php/ext/mysqli/tests/mysqli_result_references_mysqlnd.phpt, revision 1.1

1.1     ! misho       1: --TEST--
        !             2: References to result sets - mysqlnd (no copies but references)
        !             3: --SKIPIF--
        !             4: <?php
        !             5: require_once('skipif.inc');
        !             6: require_once('skipifemb.inc');
        !             7: require_once('skipifconnectfailure.inc');
        !             8: 
        !             9: require_once('connect.inc');
        !            10: if (!$IS_MYSQLND)
        !            11:        die("skip Test for mysqlnd only");
        !            12: 
        !            13: if ((version_compare(PHP_VERSION, '5.9.9', '>') == 1))
        !            14:        die("skip (TODO) PHP 6.0 has a difference debug_zval_dump output format");
        !            15: ?>
        !            16: <?php require_once('skipifemb.inc'); ?>
        !            17: --FILE--
        !            18: <?php
        !            19:        require_once('connect.inc');
        !            20:        require_once('table.inc');
        !            21: 
        !            22:        $references = array();
        !            23: 
        !            24:        if (!(mysqli_real_query($link, "SELECT id, label FROM test ORDER BY id ASC LIMIT 1")) ||
        !            25:                        !($res = mysqli_store_result($link)))
        !            26:                printf("[001] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
        !            27: 
        !            28:        $idx = 0;
        !            29:        while ($row = mysqli_fetch_assoc($res)) {
        !            30:                /* will overwrite itself */
        !            31:                $references[$idx]['row_ref']            = &$row;
        !            32:                $references[$idx]['row_copy']   = $row;
        !            33:                $references[$idx]['id_ref']             = &$row['id'];
        !            34:                $references[$idx++]['id_copy']  = $row['id'];
        !            35:        }
        !            36: 
        !            37:        debug_zval_dump($references);
        !            38:        mysqli_free_result($res);
        !            39: 
        !            40:        if (!(mysqli_real_query($link, "SELECT id, label FROM test ORDER BY id ASC LIMIT 2")) ||
        !            41:                        !($res = mysqli_use_result($link)))
        !            42:                printf("[002] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
        !            43: 
        !            44:        $rows = array();
        !            45:        for ($i = 0; $i < 2; $i++) {
        !            46:                $rows[$i] = mysqli_fetch_assoc($res);
        !            47:                $references[$idx]['row_ref']            = &$rows[$i];
        !            48:                $references[$idx]['row_copy']   = $rows[$i];
        !            49:                $references[$idx]['id_ref']             = &$rows[$i]['id'];
        !            50:                $references[$idx]['id_copy']            = $rows[$i]['id'];
        !            51:                /* enforce seperation */
        !            52:                $references[$idx]['id_copy_mod']= $rows[$i]['id'] + 0;
        !            53:        }
        !            54:        mysqli_free_result($res);
        !            55: 
        !            56:        debug_zval_dump($references);
        !            57:        print "done!";
        !            58: ?>
        !            59: --EXPECTF--
        !            60: array(1) refcount(2){
        !            61:   [0]=>
        !            62:   array(4) refcount(1){
        !            63:     [%u|b%"row_ref"]=>
        !            64:     &NULL refcount(2)
        !            65:     [%u|b%"row_copy"]=>
        !            66:     array(2) refcount(1){
        !            67:       [%u|b%"id"]=>
        !            68:       %unicode|string%(1) "1" refcount(2)
        !            69:       [%u|b%"label"]=>
        !            70:       %unicode|string%(1) "a" refcount(2)
        !            71:     }
        !            72:     [%u|b%"id_ref"]=>
        !            73:     %unicode|string%(1) "1" refcount(1)
        !            74:     [%u|b%"id_copy"]=>
        !            75:     %unicode|string%(1) "1" refcount(1)
        !            76:   }
        !            77: }
        !            78: array(2) refcount(2){
        !            79:   [0]=>
        !            80:   array(4) refcount(1){
        !            81:     [%u|b%"row_ref"]=>
        !            82:     &NULL refcount(2)
        !            83:     [%u|b%"row_copy"]=>
        !            84:     array(2) refcount(1){
        !            85:       [%u|b%"id"]=>
        !            86:       %unicode|string%(1) "1" refcount(1)
        !            87:       [%u|b%"label"]=>
        !            88:       %unicode|string%(1) "a" refcount(1)
        !            89:     }
        !            90:     [%u|b%"id_ref"]=>
        !            91:     %unicode|string%(1) "1" refcount(1)
        !            92:     [%u|b%"id_copy"]=>
        !            93:     %unicode|string%(1) "1" refcount(1)
        !            94:   }
        !            95:   [1]=>
        !            96:   array(5) refcount(1){
        !            97:     [%u|b%"row_ref"]=>
        !            98:     &array(2) refcount(2){
        !            99:       [%u|b%"id"]=>
        !           100:       &%unicode|string%(1) "2" refcount(2)
        !           101:       [%u|b%"label"]=>
        !           102:       %unicode|string%(1) "b" refcount(2)
        !           103:     }
        !           104:     [%u|b%"row_copy"]=>
        !           105:     array(2) refcount(1){
        !           106:       [%u|b%"id"]=>
        !           107:       %unicode|string%(1) "2" refcount(1)
        !           108:       [%u|b%"label"]=>
        !           109:       %unicode|string%(1) "b" refcount(2)
        !           110:     }
        !           111:     [%u|b%"id_ref"]=>
        !           112:     &%unicode|string%(1) "2" refcount(2)
        !           113:     [%u|b%"id_copy"]=>
        !           114:     %unicode|string%(1) "2" refcount(1)
        !           115:     [%u|b%"id_copy_mod"]=>
        !           116:     long(2) refcount(1)
        !           117:   }
        !           118: }
        !           119: done!

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>