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