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

1.1       misho       1: --TEST--
                      2: mysqli_stmt_execute() - 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("[009] [%d] %s.\n", mysqli_errno($link), mysqli_error($link));
                     22: 
                     23:        if (mysqli_real_query($link, 'CREATE PROCEDURE p(OUT ver_param VARCHAR(25)) BEGIN SELECT VERSION() INTO ver_param; END;')) {
                     24:                /* no result set, one output parameter */
                     25:                if (!$stmt = mysqli_prepare($link, 'CALL p(@version)'))
                     26:                        printf("[011] Cannot prepare CALL, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
                     27: 
                     28:                if (!mysqli_stmt_execute($stmt))
                     29:                        printf("[012] Cannot execute CALL, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
                     30: 
                     31:                /* yes, I really want to call it twice! */
                     32:                if (!mysqli_stmt_execute($stmt))
                     33:                        printf("[013] Cannot execute CALL, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
                     34: 
                     35:                if (!mysqli_stmt_close($stmt))
                     36:                        printf("[014] Cannot close statement, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
                     37: 
                     38:                if (!$stmt = mysqli_prepare($link, 'SELECT @version AS _version'))
                     39:                        printf("[015] Cannot prepare SELECT, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
                     40: 
                     41:                if (!mysqli_stmt_execute($stmt))
                     42:                        printf("[016] Cannot execute SELECT, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
                     43: 
                     44:                $version = 'unknown';
                     45:                if (!mysqli_stmt_bind_result($stmt, $version) ||
                     46:                                !mysqli_stmt_fetch($stmt))
                     47:                        printf("[017] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
                     48: 
                     49:                if (($version == "unknown") || ($version == ""))
                     50:                        printf("[018] Results seem wrong, got %s, [%d] %s\n",
                     51:                                $version,
                     52:                                mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
                     53: 
                     54:                mysqli_stmt_free_result($stmt);
                     55:                mysqli_stmt_close($stmt);
                     56: 
                     57:        } else {
                     58:                printf("[010] Cannot create SP, [%d] %s.\n", mysqli_errno($link), mysqli_error($link));
                     59:        }
                     60: 
                     61: 
                     62:        if (function_exists('mysqli_stmt_get_result')) {
                     63: 
                     64:                if (!mysqli_query($link, 'DROP PROCEDURE IF EXISTS p'))
                     65:                        printf("[019] [%d] %s.\n", mysqli_errno($link), mysqli_error($link));
                     66: 
                     67:                if (mysqli_real_query($link, 'CREATE PROCEDURE p(OUT ver_param VARCHAR(25)) BEGIN SELECT VERSION() INTO ver_param; END;')) {
                     68:                        // no result set, one output parameter
                     69:                        if (!$stmt = mysqli_prepare($link, 'CALL p(@version)'))
                     70:                                printf("[020] Cannot prepare CALL, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
                     71: 
                     72:                        if (!mysqli_stmt_execute($stmt))
                     73:                                printf("[021] Cannot execute CALL, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
                     74: 
                     75:                        if (!mysqli_stmt_close($stmt))
                     76:                                printf("[022] Cannot close statement, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
                     77: 
                     78:                        if (!$stmt = mysqli_prepare($link, 'SELECT @version AS _version'))
                     79:                                printf("[023] Cannot prepare SELECT, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
                     80: 
                     81:                        if (!mysqli_stmt_execute($stmt))
                     82:                                printf("[024] Cannot execute SELECT, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
                     83: 
                     84:                        if (!$res = mysqli_stmt_get_result($stmt))
                     85:                                printf("[025] Cannot get result set, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
                     86: 
                     87:                        if ((!($row = mysqli_fetch_assoc($res))) || ($row['_version'] == ""))
                     88:                                printf("[026] Results seem wrong, got %s, [%d] %s\n",
                     89:                                        $row['_version'],
                     90:                                        mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
                     91: 
                     92:                        mysqli_free_result($res);
                     93:                        mysqli_stmt_close($stmt);
                     94: 
                     95:                } else {
                     96:                        printf("[027] Cannot create SP, [%d] %s.\n", mysqli_errno($link), mysqli_error($link));
                     97:                }
                     98: 
                     99:        }
                    100: 
                    101:        if (!mysqli_query($link, 'DROP PROCEDURE IF EXISTS p'))
                    102:                printf("[028] [%d] %s.\n", mysqli_errno($link), mysqli_error($link));
                    103: 
                    104:        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;')) {
                    105:                // no result set, one input parameter, output parameter
                    106:                // yes, I really do not want to bind input values...
                    107:                if (!$stmt = mysqli_prepare($link, "CALL p('myversion', @version)"))
                    108:                        printf("[029] Cannot prepare CALL, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
                    109: 
                    110:                if (!mysqli_stmt_execute($stmt))
                    111:                        printf("[030] Cannot execute CALL, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
                    112: 
                    113:                if (!mysqli_stmt_close($stmt))
                    114:                        printf("[031] Cannot close statement, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
                    115: 
                    116:                if (!$stmt = mysqli_prepare($link, 'SELECT @version AS _version'))
                    117:                        printf("[032] Cannot prepare SELECT, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
                    118: 
                    119:                if (!mysqli_stmt_execute($stmt))
                    120:                        printf("[033] Cannot execute SELECT, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
                    121: 
                    122:                $version = 'unknown';
                    123:                if (!mysqli_stmt_bind_result($stmt, $version) ||
                    124:                                !mysqli_stmt_fetch($stmt))
                    125:                        printf("[034] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
                    126: 
                    127:                if ($version != "myversion")
                    128:                        printf("[035] Results seem wrong, got %s, [%d] %s\n",
                    129:                                $version,
                    130:                                mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
                    131: 
                    132:                mysqli_stmt_free_result($stmt);
                    133:                mysqli_stmt_close($stmt);
                    134: 
                    135:        } else {
                    136:                printf("[036] Cannot create SP, [%d] %s.\n", mysqli_errno($link), mysqli_error($link));
                    137:        }
                    138: 
                    139:        if (!mysqli_query($link, 'DROP PROCEDURE IF EXISTS p'))
                    140:                printf("[037] [%d] %s.\n", mysqli_errno($link), mysqli_error($link));
                    141: 
                    142:        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;')) {
                    143:                // no result set, one input parameter, output parameter
                    144:                // yes, I really do not want to bind input values...
                    145:                if (!$stmt = mysqli_prepare($link, 'CALL p(?, @version)'))
                    146:                        printf("[038] Cannot prepare CALL, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
                    147: 
                    148:                $version = 'myversion';
                    149:                if (!mysqli_stmt_bind_param($stmt, 's', $version))
                    150:                        printf("[039] Cannot bind input parameter, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
                    151: 
                    152:                if (!mysqli_stmt_execute($stmt))
                    153:                        printf("[040] Cannot execute CALL, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
                    154: 
                    155:                if (!mysqli_stmt_close($stmt))
                    156:                        printf("[041] Cannot close statement, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
                    157: 
                    158:                if (!$stmt = mysqli_prepare($link, 'SELECT @version AS _version'))
                    159:                        printf("[042] Cannot prepare SELECT, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
                    160: 
                    161:                if (!mysqli_stmt_execute($stmt))
                    162:                        printf("[043] Cannot execute SELECT, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
                    163: 
                    164:                $version = 'unknown';
                    165:                if (!mysqli_stmt_bind_result($stmt, $version) ||
                    166:                                !mysqli_stmt_fetch($stmt))
                    167:                        printf("[044] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
                    168: 
                    169:                if ($version !== "myversion")
                    170:                        printf("[045] Results seem wrong, got %s, [%d] %s\n",
                    171:                                $version,
                    172:                                mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
                    173: 
                    174:                mysqli_stmt_free_result($stmt);
                    175:                mysqli_stmt_close($stmt);
                    176: 
                    177:        } else {
                    178:                printf("[046] Cannot create SP, [%d] %s.\n", mysqli_errno($link), mysqli_error($link));
                    179:        }
                    180: 
                    181:        mysqli_close($link);
                    182:        print "done!";
                    183: ?>
                    184: --CLEAN--
                    185: <?php
                    186: require_once("connect.inc");
                    187: if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
                    188:    printf("[c001] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
                    189: 
                    190: if (!mysqli_query($link, "DROP TABLE IF EXISTS test_bind_fetch"))
                    191:        printf("[c002] Cannot drop table, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
                    192: 
                    193: @mysqli_query($link, 'DROP PROCEDURE IF EXISTS p');
                    194: 
                    195: mysqli_close($link);
                    196: ?>
                    197: --EXPECTF--
                    198: done!

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