Annotation of embedaddon/php/ext/mysqli/tests/mysqli_query_stored_proc.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: mysqli_query() - Stored Procedures
                      3: --SKIPIF--
                      4: <?php
                      5: require_once('skipif.inc');
                      6: require_once('skipifconnectfailure.inc');
                      7: require_once('connect.inc');
                      8: if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
                      9:        die(sprintf('skip Cannot connect to MySQL, [%d] %s.', mysqli_connect_errno(), mysqli_connect_error()));
                     10: }
                     11: if (mysqli_get_server_version($link) <= 50000) {
                     12:        die(sprintf('skip Needs MySQL 5.0+, found version %d.', mysqli_get_server_version($link)));
                     13: }
                     14: ?>
                     15: --FILE--
                     16: <?php
                     17:        require_once('connect.inc');
                     18:        require_once('table.inc');
                     19: 
                     20:        if (!mysqli_query($link, 'DROP PROCEDURE IF EXISTS p'))
                     21:                printf("[001] [%d] %s.\n", mysqli_errno($link), mysqli_error($link));
                     22: 
                     23:        if (mysqli_query($link, 'CREATE PROCEDURE p() READS SQL DATA BEGIN SELECT id, label FROM test ORDER BY id ASC;
                     24: END;')) {
                     25:                /* stored proc which returns one result set */
                     26:                if (mysqli_multi_query($link, 'CALL p()')) {
                     27:                        do {
                     28:                                if ($res = mysqli_use_result($link)) {
                     29:                                        // skip results, don't fetch all from server
                     30:                                        var_dump(mysqli_fetch_assoc($res));
                     31:                                        mysqli_free_result($res);
                     32:                                }
                     33:                        } while (mysqli_more_results($link) && mysqli_next_result($link));
                     34: 
                     35:                } else {
                     36:                        printf("[003] Cannot call SP, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
                     37:                }
                     38: 
                     39:                if (mysqli_multi_query($link, 'CALL p()')) {
                     40:                        do {
                     41:                                if ($res = mysqli_store_result($link)) {
                     42:                                        // fetch all results from server, but skip on client side
                     43:                                        var_dump(mysqli_fetch_assoc($res));
                     44:                                        mysqli_free_result($res);
                     45:                                }
                     46:                        } while (mysqli_more_results($link) && mysqli_next_result($link));
                     47: 
                     48:                } else {
                     49:                        printf("[004] Cannot call SP, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
                     50:                }
                     51: 
                     52:                if (mysqli_multi_query($link, 'CALL p()')) {
                     53:                        do {
                     54:                                if ($res = mysqli_store_result($link)) {
                     55:                                        // fetch all results from server, but skip on client side
                     56:                                        var_dump(mysqli_fetch_assoc($res));
                     57:                                        while (mysqli_fetch_assoc($res))
                     58:                                                ;
                     59:                                        mysqli_free_result($res);
                     60:                                }
                     61:                        } while (mysqli_more_results($link) && mysqli_next_result($link));
                     62: 
                     63:                } else {
                     64:                        printf("[005] Cannot call SP, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
                     65:                }
                     66: 
                     67:        } else {
                     68:                printf("[002] Cannot create SP, [%d] %s.\n", mysqli_errno($link), mysqli_error($link));
                     69:        }
                     70: 
                     71:        if (!mysqli_query($link, 'DROP PROCEDURE IF EXISTS p'))
                     72:                printf("[006] [%d] %s.\n", mysqli_errno($link), mysqli_error($link));
                     73: 
                     74:        if (mysqli_query($link, 'CREATE PROCEDURE p() READS SQL DATA BEGIN SELECT id, label FROM test ORDER BY id ASC; SELECT id FROM test ORDER BY id ASC; END;')) {
                     75:                /* stored proc which returns two result sets */
                     76: 
                     77:                if (mysqli_multi_query($link, 'CALL p()')) {
                     78:                        do {
                     79:                                if ($res = mysqli_store_result($link)) {
                     80:                                        // fetch all results from server, but skip on client side
                     81:                                        var_dump(mysqli_fetch_assoc($res));
                     82:                                        mysqli_free_result($res);
                     83:                                }
                     84:                        } while (mysqli_more_results($link) && mysqli_next_result($link));
                     85: 
                     86:                } else {
                     87:                        printf("[008] Cannot call SP, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
                     88:                }
                     89: 
                     90:        } else {
                     91:                printf("[007] Cannot create SP, [%d] %s.\n", mysqli_errno($link), mysqli_error($link));
                     92:        }
                     93: 
                     94:        if (!mysqli_query($link, 'DROP PROCEDURE IF EXISTS p'))
                     95:                printf("[009] [%d] %s.\n", mysqli_errno($link), mysqli_error($link));
                     96: 
                     97:        if (mysqli_real_query($link, 'CREATE PROCEDURE p(OUT ver_param VARCHAR(25)) BEGIN SELECT VERSION() INTO ver_param; END;')) {
                     98:                /* no result set, just output parameter */
                     99:                if (!mysqli_query($link, 'CALL p(@version)'))
                    100:                        printf("[011] Cannot call SP, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
                    101: 
                    102:                if (!mysqli_query($link, "SET @version = 'unknown'"))
                    103:                        printf("[012] Cannot reset user variable, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
                    104: 
                    105:                if (!mysqli_query($link, 'CALL p(@version)'))
                    106:                        printf("[013] Cannot call SP, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
                    107: 
                    108:                if (!$res = mysqli_query($link, 'SELECT @version as _vers'))
                    109:                        printf("[014] Cannot fetch user variable, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
                    110: 
                    111:                if (!$row = mysqli_fetch_assoc($res) ||
                    112:                                $row['_vers'] == 'unknown')
                    113:                        printf("[015] Results seem wrong, got %s, [%d] %s\n",
                    114:                                $row['_vers'],
                    115:                                mysqli_errno($link), mysqli_error($link));
                    116:                mysqli_free_result($res);
                    117: 
                    118:        } else {
                    119:                printf("[010] Cannot create SP, [%d] %s.\n", mysqli_errno($link), mysqli_error($link));
                    120:        }
                    121: 
                    122:        if (!mysqli_query($link, 'DROP PROCEDURE IF EXISTS p'))
                    123:                printf("[016] [%d] %s.\n", mysqli_errno($link), mysqli_error($link));
                    124: 
                    125:        if (mysqli_real_query($link, 'CREATE PROCEDURE p(IN ver_in VARCHAR(25), OUT ver_out VARCHAR(25)) BEGIN SELECT ver_in INTO ver_out; END;')) {
                    126:                /* no result set, one input, one output parameter */
                    127:                if (!mysqli_query($link, "CALL p('myversion', @version)"))
                    128:                        printf("[018] Cannot call SP, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
                    129: 
                    130:                if (!mysqli_query($link, "SET @version = 'unknown'"))
                    131:                        printf("[019] Cannot reset user variable, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
                    132: 
                    133:                if (!mysqli_query($link, "CALL p('myversion', @version)"))
                    134:                        printf("[020] Cannot call SP, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
                    135: 
                    136:                if (!$res = mysqli_query($link, 'SELECT @version as _vers'))
                    137:                        printf("[021] Cannot fetch user variable, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
                    138: 
                    139:                if (!$row = mysqli_fetch_assoc($res) ||
                    140:                                $row['_vers'] == 'myversion')
                    141:                        printf("[022] Results seem wrong, got %s, [%d] %s\n",
                    142:                                $row['_vers'],
                    143:                                mysqli_errno($link), mysqli_error($link));
                    144:                mysqli_free_result($res);
                    145: 
                    146:        } else {
                    147:                printf("[017] Cannot create SP, [%d] %s.\n", mysqli_errno($link), mysqli_error($link));
                    148:        }
                    149: 
                    150:        mysqli_close($link);
                    151:        print "done!";
                    152: ?>
                    153: --CLEAN--
                    154: <?php
                    155: require_once("connect.inc");
                    156: if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
                    157:    printf("[c001] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
                    158: 
                    159: if (!mysqli_query($link, "DROP TABLE IF EXISTS test"))
                    160:        printf("[c002] Cannot drop table, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
                    161: 
                    162: @mysqli_query($link, "DROP PROCEDURE IS EXISTS p");
                    163: 
                    164: mysqli_close($link);
                    165: ?>
                    166: --EXPECTF--
                    167: array(2) {
                    168:   [%u|b%"id"]=>
                    169:   %unicode|string%(1) "1"
                    170:   [%u|b%"label"]=>
                    171:   %unicode|string%(1) "a"
                    172: }
                    173: array(2) {
                    174:   [%u|b%"id"]=>
                    175:   %unicode|string%(1) "1"
                    176:   [%u|b%"label"]=>
                    177:   %unicode|string%(1) "a"
                    178: }
                    179: array(2) {
                    180:   [%u|b%"id"]=>
                    181:   %unicode|string%(1) "1"
                    182:   [%u|b%"label"]=>
                    183:   %unicode|string%(1) "a"
                    184: }
                    185: array(2) {
                    186:   [%u|b%"id"]=>
                    187:   %unicode|string%(1) "1"
                    188:   [%u|b%"label"]=>
                    189:   %unicode|string%(1) "a"
                    190: }
                    191: array(1) {
                    192:   [%u|b%"id"]=>
                    193:   %unicode|string%(1) "1"
                    194: }
                    195: done!

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>