mirror of
https://github.com/php/php-src.git
synced 2024-10-21 08:22:42 +00:00
185 lines
7.3 KiB
PHP
185 lines
7.3 KiB
PHP
--TEST--
|
|
mysqli_stmt_execute() - Stored Procedures
|
|
--SKIPIF--
|
|
<?php
|
|
require_once('skipif.inc');
|
|
require_once('skipifconnectfailure.inc');
|
|
require_once('connect.inc');
|
|
if (!$link = mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
|
|
die(sprintf('skip Cannot connect to MySQL, [%d] %s.', mysqli_connect_errno(), mysqli_connect_error()));
|
|
}
|
|
if (mysqli_get_server_version($link) <= 50000) {
|
|
die(sprintf('skip Needs MySQL 5.0+, found version %d.', mysqli_get_server_version($link)));
|
|
}
|
|
?>
|
|
--FILE--
|
|
<?php
|
|
require_once('connect.inc');
|
|
require_once('table.inc');
|
|
|
|
if (!mysqli_query($link, 'DROP PROCEDURE IF EXISTS p'))
|
|
printf("[009] [%d] %s.\n", mysqli_errno($link), mysqli_error($link));
|
|
|
|
if (mysqli_real_query($link, 'CREATE PROCEDURE p(OUT ver_param VARCHAR(25)) BEGIN SELECT VERSION() INTO ver_param; END;')) {
|
|
/* no result set, one output parameter */
|
|
if (!$stmt = mysqli_prepare($link, 'CALL p(@version)'))
|
|
printf("[011] Cannot prepare CALL, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
|
|
|
|
if (!mysqli_stmt_execute($stmt))
|
|
printf("[012] Cannot execute CALL, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
|
|
|
|
/* yes, I really want to call it twice! */
|
|
if (!mysqli_stmt_execute($stmt))
|
|
printf("[013] Cannot execute CALL, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
|
|
|
|
if (!mysqli_stmt_close($stmt))
|
|
printf("[014] Cannot close statement, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
|
|
|
|
if (!$stmt = mysqli_prepare($link, 'SELECT @version AS _version'))
|
|
printf("[015] Cannot prepare SELECT, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
|
|
|
|
if (!mysqli_stmt_execute($stmt))
|
|
printf("[016] Cannot execute SELECT, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
|
|
|
|
$version = 'unknown';
|
|
if (!mysqli_stmt_bind_result($stmt, $version) ||
|
|
!mysqli_stmt_fetch($stmt))
|
|
printf("[017] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
|
|
|
|
if (($version == "unknown") || ($version == ""))
|
|
printf("[018] Results seem wrong, got %s, [%d] %s\n",
|
|
$version,
|
|
mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
|
|
|
|
mysqli_stmt_free_result($stmt);
|
|
mysqli_stmt_close($stmt);
|
|
|
|
} else {
|
|
printf("[010] Cannot create SP, [%d] %s.\n", mysqli_errno($link), mysqli_error($link));
|
|
}
|
|
|
|
|
|
if (function_exists('mysqli_stmt_get_result')) {
|
|
|
|
if (!mysqli_query($link, 'DROP PROCEDURE IF EXISTS p'))
|
|
printf("[019] [%d] %s.\n", mysqli_errno($link), mysqli_error($link));
|
|
|
|
if (mysqli_real_query($link, 'CREATE PROCEDURE p(OUT ver_param VARCHAR(25)) BEGIN SELECT VERSION() INTO ver_param; END;')) {
|
|
// no result set, one output parameter
|
|
if (!$stmt = mysqli_prepare($link, 'CALL p(@version)'))
|
|
printf("[020] Cannot prepare CALL, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
|
|
|
|
if (!mysqli_stmt_execute($stmt))
|
|
printf("[021] Cannot execute CALL, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
|
|
|
|
if (!mysqli_stmt_close($stmt))
|
|
printf("[022] Cannot close statement, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
|
|
|
|
if (!$stmt = mysqli_prepare($link, 'SELECT @version AS _version'))
|
|
printf("[023] Cannot prepare SELECT, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
|
|
|
|
if (!mysqli_stmt_execute($stmt))
|
|
printf("[024] Cannot execute SELECT, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
|
|
|
|
if (!$res = mysqli_stmt_get_result($stmt))
|
|
printf("[025] Cannot get result set, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
|
|
|
|
if ((!($row = mysqli_fetch_assoc($res))) || ($row['_version'] == ""))
|
|
printf("[026] Results seem wrong, got %s, [%d] %s\n",
|
|
$row['_version'],
|
|
mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
|
|
|
|
mysqli_free_result($res);
|
|
mysqli_stmt_close($stmt);
|
|
|
|
} else {
|
|
printf("[027] Cannot create SP, [%d] %s.\n", mysqli_errno($link), mysqli_error($link));
|
|
}
|
|
|
|
}
|
|
|
|
if (!mysqli_query($link, 'DROP PROCEDURE IF EXISTS p'))
|
|
printf("[028] [%d] %s.\n", mysqli_errno($link), mysqli_error($link));
|
|
|
|
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;')) {
|
|
// no result set, one input parameter, output parameter
|
|
// yes, I really do not want to bind input values...
|
|
if (!$stmt = mysqli_prepare($link, 'CALL p("myversion", @version)'))
|
|
printf("[029] Cannot prepare CALL, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
|
|
|
|
if (!mysqli_stmt_execute($stmt))
|
|
printf("[030] Cannot execute CALL, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
|
|
|
|
if (!mysqli_stmt_close($stmt))
|
|
printf("[031] Cannot close statement, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
|
|
|
|
if (!$stmt = mysqli_prepare($link, 'SELECT @version AS _version'))
|
|
printf("[032] Cannot prepare SELECT, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
|
|
|
|
if (!mysqli_stmt_execute($stmt))
|
|
printf("[033] Cannot execute SELECT, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
|
|
|
|
$version = 'unknown';
|
|
if (!mysqli_stmt_bind_result($stmt, $version) ||
|
|
!mysqli_stmt_fetch($stmt))
|
|
printf("[034] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
|
|
|
|
if ($version != "myversion")
|
|
printf("[035] Results seem wrong, got %s, [%d] %s\n",
|
|
$version,
|
|
mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
|
|
|
|
mysqli_stmt_free_result($stmt);
|
|
mysqli_stmt_close($stmt);
|
|
|
|
} else {
|
|
printf("[036] Cannot create SP, [%d] %s.\n", mysqli_errno($link), mysqli_error($link));
|
|
}
|
|
|
|
if (!mysqli_query($link, 'DROP PROCEDURE IF EXISTS p'))
|
|
printf("[037] [%d] %s.\n", mysqli_errno($link), mysqli_error($link));
|
|
|
|
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;')) {
|
|
// no result set, one input parameter, output parameter
|
|
// yes, I really do not want to bind input values...
|
|
if (!$stmt = mysqli_prepare($link, 'CALL p(?, @version)'))
|
|
printf("[038] Cannot prepare CALL, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
|
|
|
|
$version = 'myversion';
|
|
if (!mysqli_stmt_bind_param($stmt, 's', $version))
|
|
printf("[039] Cannot bind input parameter, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
|
|
|
|
if (!mysqli_stmt_execute($stmt))
|
|
printf("[040] Cannot execute CALL, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
|
|
|
|
if (!mysqli_stmt_close($stmt))
|
|
printf("[041] Cannot close statement, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
|
|
|
|
if (!$stmt = mysqli_prepare($link, 'SELECT @version AS _version'))
|
|
printf("[042] Cannot prepare SELECT, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
|
|
|
|
if (!mysqli_stmt_execute($stmt))
|
|
printf("[043] Cannot execute SELECT, [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
|
|
|
|
$version = 'unknown';
|
|
if (!mysqli_stmt_bind_result($stmt, $version) ||
|
|
!mysqli_stmt_fetch($stmt))
|
|
printf("[044] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
|
|
|
|
if ($version !== "myversion")
|
|
printf("[045] Results seem wrong, got %s, [%d] %s\n",
|
|
$version,
|
|
mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
|
|
|
|
mysqli_stmt_free_result($stmt);
|
|
mysqli_stmt_close($stmt);
|
|
|
|
} else {
|
|
printf("[046] Cannot create SP, [%d] %s.\n", mysqli_errno($link), mysqli_error($link));
|
|
}
|
|
|
|
mysqli_close($link);
|
|
print "done!";
|
|
?>
|
|
--EXPECTF--
|
|
done!
|