123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- --TEST--
- References to result sets - mysqlnd (no copies but references)
- --SKIPIF--
- <?php
- require_once('skipif.inc');
- require_once('skipifemb.inc');
- require_once('skipifconnectfailure.inc');
- require_once('connect.inc');
- if (!$IS_MYSQLND)
- die("skip Test for mysqlnd only");
- if ((version_compare(PHP_VERSION, '5.9.9', '>') == 1))
- die("skip (TODO) PHP 6.0 has a difference debug_zval_dump output format");
- ?>
- <?php require_once('skipifemb.inc'); ?>
- --FILE--
- <?php
- require_once('connect.inc');
- require_once('table.inc');
- $references = array();
- if (!(mysqli_real_query($link, "SELECT id, label FROM test ORDER BY id ASC LIMIT 1")) ||
- !($res = mysqli_store_result($link)))
- printf("[001] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
- $idx = 0;
- while ($row = mysqli_fetch_assoc($res)) {
- /* will overwrite itself */
- $references[$idx]['row_ref'] = &$row;
- $references[$idx]['row_copy'] = $row;
- $references[$idx]['id_ref'] = &$row['id'];
- $references[$idx++]['id_copy'] = $row['id'];
- }
- debug_zval_dump($references);
- mysqli_free_result($res);
- if (!(mysqli_real_query($link, "SELECT id, label FROM test ORDER BY id ASC LIMIT 2")) ||
- !($res = mysqli_use_result($link)))
- printf("[002] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
- $rows = array();
- for ($i = 0; $i < 2; $i++) {
- $rows[$i] = mysqli_fetch_assoc($res);
- $references[$idx]['row_ref'] = &$rows[$i];
- $references[$idx]['row_copy'] = $rows[$i];
- $references[$idx]['id_ref'] = &$rows[$i]['id'];
- $references[$idx]['id_copy'] = $rows[$i]['id'];
- /* enforce separation */
- $references[$idx]['id_copy_mod']= $rows[$i]['id'] + 0;
- }
- mysqli_free_result($res);
- debug_zval_dump($references);
- print "done!";
- ?>
- --EXPECTF--
- array(1) refcount(2){
- [0]=>
- array(4) refcount(1){
- [%u|b%"row_ref"]=>
- &NULL refcount(2)
- [%u|b%"row_copy"]=>
- array(2) refcount(1){
- [%u|b%"id"]=>
- %unicode|string%(1) "1" refcount(2)
- [%u|b%"label"]=>
- %unicode|string%(1) "a" refcount(2)
- }
- [%u|b%"id_ref"]=>
- %unicode|string%(1) "1" refcount(1)
- [%u|b%"id_copy"]=>
- %unicode|string%(1) "1" refcount(1)
- }
- }
- array(2) refcount(2){
- [0]=>
- array(4) refcount(1){
- [%u|b%"row_ref"]=>
- &NULL refcount(2)
- [%u|b%"row_copy"]=>
- array(2) refcount(1){
- [%u|b%"id"]=>
- %unicode|string%(1) "1" refcount(1)
- [%u|b%"label"]=>
- %unicode|string%(1) "a" refcount(1)
- }
- [%u|b%"id_ref"]=>
- %unicode|string%(1) "1" refcount(1)
- [%u|b%"id_copy"]=>
- %unicode|string%(1) "1" refcount(1)
- }
- [1]=>
- array(5) refcount(1){
- [%u|b%"row_ref"]=>
- &array(2) refcount(2){
- [%u|b%"id"]=>
- &%unicode|string%(1) "2" refcount(2)
- [%u|b%"label"]=>
- %unicode|string%(1) "b" refcount(2)
- }
- [%u|b%"row_copy"]=>
- array(2) refcount(1){
- [%u|b%"id"]=>
- %unicode|string%(1) "2" refcount(1)
- [%u|b%"label"]=>
- %unicode|string%(1) "b" refcount(2)
- }
- [%u|b%"id_ref"]=>
- &%unicode|string%(1) "2" refcount(2)
- [%u|b%"id_copy"]=>
- %unicode|string%(1) "2" refcount(1)
- [%u|b%"id_copy_mod"]=>
- long(2) refcount(1)
- }
- }
- done!
|