(PHP 5, PHP 7, PHP 8)
mysqli_stmt::store_result -- mysqli_stmt_store_result — Сохраняет набор результатов во внутреннем буфере
Объектно-ориентированный стиль
Процедурный стиль
Функцию следует вызывать для запросов, которые успешно создают набор результатов (например, SELECT, SHOW, DESCRIBE, EXPLAIN
),
только если необходимо буферизовать в PHP полный набор результатов.
Каждый последующий вызов mysqli_stmt_fetch() будет возвращать буферизованные данные.
Замечание:
В остальных случаях вызывать mysqli_stmt_store_result() нет необходимости. Но если такой вызов совершён, ничего страшного не случится, это не повлияет на производительность и целостность данных. Чтобы убедиться, что запрос вернул результирующий набор, можно воспользоваться функцией mysqli_stmt_result_metadata(), которая в этом случае вернёт
false
.
stmt
Только для процедурного стиля: объект mysqli_stmt, полученный с помощью mysqli_stmt_init().
Возвращает true
в случае успешного выполнения или false
в случае возникновения ошибки.
Если уведомления об ошибках mysqli включены (MYSQLI_REPORT_ERROR
) и запрошенная операция не удалась,
выдаётся предупреждение. Если, кроме того, установлен режим MYSQLI_REPORT_STRICT
,
вместо этого будет выброшено исключение mysqli_sql_exception.
Пример #1 Объектно-ориентированный стиль
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
$query = "SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 20";
$stmt = $mysqli->prepare($query);
$stmt->execute();
/* сохранение результата во внутреннем буфере */
$stmt->store_result();
printf("Число строк: %d.\n", $stmt->num_rows);
Пример #2 Процедурный стиль
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
$query = "SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 20";
$stmt = mysqli_prepare($link, $query);
mysqli_stmt_execute($stmt);
/* сохранение результата во внутреннем буфере */
mysqli_stmt_store_result($stmt);
printf("Число строк: %d.\n", mysqli_stmt_num_rows($stmt));
?>
Результат выполнения данных примеров:
Количество строк: 20.