Вызов неопределенного метода mysqli_stmt :: next_result ()

Я пытаюсь перебрать хранимую процедуру, вызванную с помощью подготовленного оператора, в PHP. Надеюсь, это не невозможно. Вот мой PHP-код:

$database = new mysqli($server, $user, $pass, $db);
$stmt = $database->prepare("CALL thisShouldReturnEightResultSets (?)");
$stmt->bind_param("i", $id);
$stmt->execute();

do {
if ($res = $stmt->bind_result($myvar)) {
$stmt->fetch();
echo "*" . $myvar . "<br/>";
} else {
if ($stmt->errno) {
echo "Store failed: (" . $stmt->errno . ") " . $stmt->error;
}
}
} while ($stmt->next_result());

Это должно напечатать так:

* 4
* 16
* 7
etc...

… и затем выйдите, как только он запускает из наборов результатов. Вместо этого я получаю:

* 4

Fatal error: Call to undefined method mysqli_stmt::next_result()

Сначала я попробовал get_result вместо bind_result, но это ошибка. На основе этот Я обнаружил, что у меня не установлен драйвер mysqlnd. Я работал с этим с bind_result. Теперь мне нужно обойти next_result который я предполагаю, также является частью драйвера mysqlnd. Какие у меня есть варианты? Технические заметки:

PHP Version 5.3.2-1ubuntu4.11

Благодарю.

0

Решение

Я не думаю, что вы можете сделать это с готовым оператором, так как у вас нет драйвера MYSQLND. Вы должны будете сделать это по старинке, с побегом.

$id = $database->real_escape_string($id);
if ($database->multi_query("CALL thisShouldReturnEightResultSets ('$id')")) {
do {
if ($result = $database->store_result()) {
while ($row = $result->fetch_row()) {
echo "*" . $row[0] . "<br/>";
}
}
} while ($database->next_result());
}
0

Другие решения

bindResult не любит множественные результаты.

Используйте get_result (), затем fetch_assoc и сохраните в массиве,
Затем используйте цикл foreach для вывода результатов.

  $res = $stmt->get_result();
$array[];

while($x = $res->fetch_assoc()){
$array[]=$x;

}
0

По вопросам рекламы [email protected]