2005-06-22 10:14:32 +00:00
|
|
|
--TEST--
|
|
|
|
function test: nested selects (cursors)
|
|
|
|
--SKIPIF--
|
2007-10-10 10:10:14 +00:00
|
|
|
<?php
|
|
|
|
require_once('skipif.inc');
|
|
|
|
require_once('skipifconnectfailure.inc');
|
|
|
|
include "connect.inc";
|
|
|
|
|
|
|
|
if (!$link = mysqli_connect($host, $user, $passwd, $db, $port, $socket))
|
|
|
|
die("skip Cannot connect to check required version");
|
|
|
|
|
2005-06-22 10:14:32 +00:00
|
|
|
/* skip cursor test for versions < 50004 */
|
2007-10-10 10:10:14 +00:00
|
|
|
if ((!$IS_MYSQLND && (mysqli_get_client_version() < 50009)) ||
|
|
|
|
(mysqli_get_server_version($link) < 50009)) {
|
|
|
|
die(sprintf("skip Client library doesn't support cursors (%s/%s)",
|
|
|
|
mysqli_get_client_version(), mysqli_get_server_version($link)));
|
2005-06-22 10:14:32 +00:00
|
|
|
}
|
2007-10-10 10:10:14 +00:00
|
|
|
mysqli_close($link);
|
2005-06-22 10:14:32 +00:00
|
|
|
?>
|
|
|
|
--FILE--
|
|
|
|
<?php
|
|
|
|
function open_cursor($mysql, $query) {
|
2007-10-10 10:10:14 +00:00
|
|
|
if (!is_object($stmt = $mysql->prepare($query))) {
|
|
|
|
printf("[001] Cannot create statement object for '%s', [%d] %s\n",
|
|
|
|
$query, $mysql->errno, $mysql->error);
|
|
|
|
}
|
|
|
|
|
2005-06-22 10:14:32 +00:00
|
|
|
$stmt->attr_set(MYSQLI_STMT_ATTR_CURSOR_TYPE, MYSQLI_CURSOR_TYPE_READ_ONLY);
|
|
|
|
return $stmt;
|
|
|
|
}
|
|
|
|
|
|
|
|
include "connect.inc";
|
2007-10-10 10:10:14 +00:00
|
|
|
$mysql = new mysqli($host, $user, $passwd, $db, $port, $socket);
|
|
|
|
|
|
|
|
if ((!$IS_MYSQLND && mysqli_get_client_version() < 50009) ||
|
|
|
|
(mysqli_get_server_version($mysql) < 50009)) {
|
|
|
|
/* we really want to skip it... */
|
|
|
|
die(var_dump(63));
|
|
|
|
}
|
|
|
|
|
2005-06-22 10:14:32 +00:00
|
|
|
$a = array();
|
|
|
|
|
|
|
|
for ($i=0;$i < 3; $i++) {
|
|
|
|
$mysql->query("DROP TABLE IF EXISTS cursor$i");
|
2007-10-10 10:10:14 +00:00
|
|
|
$mysql->query("CREATE TABLE cursor$i (a int not null) ENGINE=" . $engine);
|
2005-06-22 10:14:32 +00:00
|
|
|
$mysql->query("INSERT INTO cursor$i VALUES (1),(2),(3),(4),(5),(6)");
|
|
|
|
$stmt[$i] = open_cursor($mysql, "SELECT a FROM cursor$i");
|
|
|
|
$stmt[$i]->execute();
|
|
|
|
$stmt[$i]->bind_result($a[$i]);
|
|
|
|
}
|
|
|
|
|
2007-10-10 10:10:14 +00:00
|
|
|
|
2005-06-22 10:14:32 +00:00
|
|
|
$cnt = 0;
|
|
|
|
while ($stmt[0]->fetch()) {
|
|
|
|
$stmt[1]->fetch();
|
|
|
|
$stmt[2]->fetch();
|
|
|
|
$cnt += $a[0] + $a[1] + $a[2];
|
|
|
|
}
|
|
|
|
|
|
|
|
for ($i=0; $i < 3; $i++) {
|
|
|
|
$stmt[$i]->close();
|
|
|
|
}
|
|
|
|
|
|
|
|
$mysql->close();
|
|
|
|
var_dump($cnt);
|
|
|
|
?>
|
|
|
|
--EXPECT--
|
2007-10-10 10:10:14 +00:00
|
|
|
int(63)
|