Annotation of embedaddon/php/ext/mysqli/tests/mysqli_result_references.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: References to result sets
! 3: --SKIPIF--
! 4: <?php
! 5: require_once('skipif.inc');
! 6: require_once('skipifemb.inc');
! 7: require_once('skipifconnectfailure.inc');
! 8: ?>
! 9: --FILE--
! 10: <?php
! 11: require_once('connect.inc');
! 12: require_once('table.inc');
! 13:
! 14: $references = array();
! 15:
! 16: if (!(mysqli_real_query($link, "SELECT id, label FROM test ORDER BY id ASC LIMIT 2")) ||
! 17: !($res = mysqli_store_result($link)))
! 18: printf("[001] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
! 19:
! 20: $idx = 0;
! 21: while ($row = mysqli_fetch_assoc($res)) {
! 22: /* mysqlnd: force seperation - create copies */
! 23: $references[$idx] = array(
! 24: 'id' => &$row['id'],
! 25: 'label' => $row['label'] . '');
! 26: $references[$idx++]['id'] += 0;
! 27: }
! 28:
! 29: mysqli_close($link);
! 30:
! 31: mysqli_data_seek($res, 0);
! 32: while ($row = mysqli_fetch_assoc($res)) {
! 33: /* mysqlnd: force seperation - create copies */
! 34: $references[$idx] = array(
! 35: 'id' => &$row['id'],
! 36: 'label' => $row['label'] . '');
! 37: $references[$idx++]['id'] += 0;
! 38: }
! 39:
! 40: mysqli_free_result($res);
! 41:
! 42: if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
! 43: printf("[002] Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
! 44: $host, $user, $db, $port, $socket);
! 45:
! 46: if (!(mysqli_real_query($link, "SELECT id, label FROM test ORDER BY id ASC LIMIT 2")) ||
! 47: !($res = mysqli_use_result($link)))
! 48: printf("[003] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
! 49:
! 50: while ($row = mysqli_fetch_assoc($res)) {
! 51: /* mysqlnd: force seperation - create copies*/
! 52: $references[$idx] = array(
! 53: 'id' => &$row['id'],
! 54: 'label' => $row['label'] . '');
! 55: $references[$idx]['id2'] = &$references[$idx]['id'];
! 56: $references[$idx]['id'] += 1;
! 57: $references[$idx++]['id2'] += 1;
! 58: }
! 59:
! 60: $references[$idx++] = &$res;
! 61: mysqli_free_result($res);
! 62: @debug_zval_dump($references);
! 63:
! 64: if (!(mysqli_real_query($link, "SELECT id, label FROM test ORDER BY id ASC LIMIT 1")) ||
! 65: !($res = mysqli_use_result($link)))
! 66: printf("[004] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
! 67:
! 68: $tmp = array();
! 69: while ($row = mysqli_fetch_assoc($res)) {
! 70: $tmp[] = $row;
! 71: }
! 72: $tmp = unserialize(serialize($tmp));
! 73: debug_zval_dump($tmp);
! 74: mysqli_free_result($res);
! 75:
! 76: mysqli_close($link);
! 77: print "done!";
! 78: ?>
! 79: --CLEAN--
! 80: <?php
! 81: require_once("clean_table.inc");
! 82: ?>
! 83: --EXPECTF--
! 84: array(7) refcount(2){
! 85: [0]=>
! 86: array(2) refcount(1){
! 87: [%u|b%"id"]=>
! 88: long(1) refcount(1)
! 89: [%u|b%"label"]=>
! 90: %unicode|string%(1) "a" refcount(1)
! 91: }
! 92: [1]=>
! 93: array(2) refcount(1){
! 94: [%u|b%"id"]=>
! 95: long(2) refcount(1)
! 96: [%u|b%"label"]=>
! 97: %unicode|string%(1) "b" refcount(1)
! 98: }
! 99: [2]=>
! 100: array(2) refcount(1){
! 101: [%u|b%"id"]=>
! 102: long(1) refcount(1)
! 103: [%u|b%"label"]=>
! 104: %unicode|string%(1) "a" refcount(1)
! 105: }
! 106: [3]=>
! 107: array(2) refcount(1){
! 108: [%u|b%"id"]=>
! 109: long(2) refcount(1)
! 110: [%u|b%"label"]=>
! 111: %unicode|string%(1) "b" refcount(1)
! 112: }
! 113: [4]=>
! 114: array(3) refcount(1){
! 115: [%u|b%"id"]=>
! 116: &long(3) refcount(2)
! 117: [%u|b%"label"]=>
! 118: %unicode|string%(1) "a" refcount(1)
! 119: [%u|b%"id2"]=>
! 120: &long(3) refcount(2)
! 121: }
! 122: [5]=>
! 123: array(3) refcount(1){
! 124: [%u|b%"id"]=>
! 125: &long(4) refcount(2)
! 126: [%u|b%"label"]=>
! 127: %unicode|string%(1) "b" refcount(1)
! 128: [%u|b%"id2"]=>
! 129: &long(4) refcount(2)
! 130: }
! 131: [6]=>
! 132: &object(mysqli_result)#2 (5) refcount(2){
! 133: [%u|b%"current_field"]=>
! 134: NULL refcount(1)
! 135: [%u|b%"field_count"]=>
! 136: NULL refcount(1)
! 137: [%u|b%"lengths"]=>
! 138: NULL refcount(1)
! 139: [%u|b%"num_rows"]=>
! 140: NULL refcount(1)
! 141: [%u|b%"type"]=>
! 142: NULL refcount(1)
! 143: }
! 144: }
! 145: array(1) refcount(2){
! 146: [0]=>
! 147: array(2) refcount(1){
! 148: [%u|b%"id"]=>
! 149: %unicode|string%(1) "1" refcount(1)
! 150: [%u|b%"label"]=>
! 151: %unicode|string%(1) "a" refcount(1)
! 152: }
! 153: }
! 154: done!
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>