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>