1--TEST-- 2References to result sets 3--SKIPIF-- 4<?php 5require_once('skipif.inc'); 6require_once('skipifemb.inc'); 7require_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 separation - 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 separation - 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 separation - 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-- 84array(7) refcount(2){ 85 [0]=> 86 array(2) refcount(1){ 87 [%u|b%"id"]=> 88 int(1) 89 [%u|b%"label"]=> 90 %unicode|string%(1) "a" refcount(%d) 91 } 92 [1]=> 93 array(2) refcount(1){ 94 [%u|b%"id"]=> 95 int(2) 96 [%u|b%"label"]=> 97 %unicode|string%(1) "b" refcount(%d) 98 } 99 [2]=> 100 array(2) refcount(1){ 101 [%u|b%"id"]=> 102 int(1) 103 [%u|b%"label"]=> 104 %unicode|string%(1) "a" refcount(%d) 105 } 106 [3]=> 107 array(2) refcount(1){ 108 [%u|b%"id"]=> 109 int(2) 110 [%u|b%"label"]=> 111 %unicode|string%(1) "b" refcount(%d) 112 } 113 [4]=> 114 array(3) refcount(1){ 115 [%u|b%"id"]=> 116 &int(3) 117 [%u|b%"label"]=> 118 %unicode|string%(1) "a" refcount(%d) 119 [%u|b%"id2"]=> 120 &int(3) 121 } 122 [5]=> 123 array(3) refcount(1){ 124 [%u|b%"id"]=> 125 &int(4) 126 [%u|b%"label"]=> 127 %unicode|string%(1) "b" refcount(%d) 128 [%u|b%"id2"]=> 129 &int(4) 130 } 131 [6]=> 132 &object(mysqli_result)#%d (5) refcount(%d){ 133 [%u|b%"current_field"]=> 134 NULL 135 [%u|b%"field_count"]=> 136 NULL 137 [%u|b%"lengths"]=> 138 NULL 139 [%u|b%"num_rows"]=> 140 NULL 141 [%u|b%"type"]=> 142 NULL 143 } 144} 145array(1) refcount(2){ 146 [0]=> 147 array(2) refcount(1){ 148 [%u|b%"id"]=> 149 %unicode|string%(1) "1" refcount(%d) 150 [%u|b%"label"]=> 151 %unicode|string%(1) "a" refcount(%d) 152 } 153} 154done! 155