mysqli_stmt::$affected_rows
mysqli_stmt_affected_rows
(PHP 5, PHP 7)
mysqli_stmt::$affected_rows -- mysqli_stmt_affected_rows — Возвращает общее количество строк, измененных, удаленных или добавленных последним выполненным выражением
Описание
Объектно-ориентированный стиль
Процедурный стиль
Возвращает количество строк, измененных запросом INSERT, UPDATE или DELETE.
Эта функция работает только с запросами, обновляющими таблицу. Для получения количества строк для запроса SELECT используйте вместо нее mysqli_stmt_num_rows().
Список параметров
-
stmt
-
Только для процедурного стиля: Идентификатор выражения, полученный с помощью mysqli_stmt_init().
Возвращаемые значения
Целое число больше нуля показывает количество измененных или найденных строк. Ноль показывает, что не было обновлено ни одной записи для оператора UPDATE/DELETE, ни одна строка не удовлетворила условию WHERE в запросе или что ни один запрос еще не выполнен. -1 показывает, что запрос выполнен с ошибкой. NULL показывает, что функция получила неверный аргумент.
Замечание:
Если количество измененных строк больше, чем максимальное значение для типа int в PHP, то это количество будет возвращено в виде строкового значения.
Примеры
Пример #1 Объектно-ориентированный стиль
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* проверка соединения */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* создание временной таблицы */
$mysqli->query("CREATE TEMPORARY TABLE myCountry LIKE Country");
$query = "INSERT INTO myCountry SELECT * FROM Country WHERE Code LIKE ?";
/* подготовленное выражение */
if ($stmt = $mysqli->prepare($query)) {
/* привязка переменной к метке */
$code = 'A%';
$stmt->bind_param("s", $code);
/* выполнение выражения */
$stmt->execute();
printf("rows inserted: %d\n", $stmt->affected_rows);
/* закрытие подготовленного выражения */
$stmt->close();
}
/* закрытие соединения */
$mysqli->close();
?>
Пример #2 Процедурный стиль
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* проверка соединения */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* создание временной таблицы */
mysqli_query($link, "CREATE TEMPORARY TABLE myCountry LIKE Country");
$query = "INSERT INTO myCountry SELECT * FROM Country WHERE Code LIKE ?";
/* подготовленное выражение */
if ($stmt = mysqli_prepare($link, $query)) {
/* привязка переменной к метке */
$code = 'A%';
mysqli_stmt_bind_param($stmt, "s", $code);
/* выполнение выражения */
mysqli_stmt_execute($stmt);
printf("rows inserted: %d\n", mysqli_stmt_affected_rows($stmt));
/* закрытие подготовленного выражения */
mysqli_stmt_close($stmt);
}
/* закрытие соединения */
mysqli_close($link);
?>
Результат выполнения данных примеров:
rows inserted: 17
Смотрите также
- mysqli_stmt_num_rows() - Возвращает число строк в результате запроса
- mysqli_prepare() - Подготавливает SQL выражение к выполнению
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Расширения для работы с базами данных
- Расширения для работы с базами данных отдельных производителей
- MySQL Drivers and Plugins
- Улучшенный модуль MySQL
- mysqli_stmt::$affected_rows
- Функция mysqli_stmt::attr_get() - Получает текущее значение атрибута запроса
- Функция mysqli_stmt::attr_set() - Изменяет поведение подготовленного запроса
- Функция mysqli_stmt::bind_param() - Привязка переменных к параметрам подготавливаемого запроса
- Функция mysqli_stmt::bind_result() - Привязка переменных к подготавленному запросу для размещения результата
- Функция mysqli_stmt::close() - Закрывает подготовленный запрос
- mysqli_stmt::__construct
- Функция mysqli_stmt::data_seek() - Переход к заданной строке в результирующем наборе
- Функция mysqli_stmt::$errno() - Возвращает код ошибки выполнения последнего запроса
- Функция mysqli_stmt::$error_list() - Возвращает список ошибок выполнения последнего запроса
- Функция mysqli_stmt::$error() - Возвращает строку с пояснением последней ошибки при выполнении запроса
- Функция mysqli_stmt::execute() - Выполняет подготовленный запрос
- Функция mysqli_stmt::fetch() - Связывает результаты подготовленного выражения с переменными
- Функция mysqli_stmt::$field_count() - Возвращает число полей в заданном выражении
- Функция mysqli_stmt::free_result() - Освобождает память от результата запроса, указанного дескриптором
- Функция mysqli_stmt::get_result() - Получает результат из подготовленного запроса
- Функция mysqli_stmt::get_warnings() - Получает результат от SHOW WARNINGS
- Функция mysqli_stmt::$insert_id() - Получает ID сгенерированный предыдущей операцией INSERT
- Функция mysqli_stmt::more_results() - Проверяет, есть ли еще наборы строк в результате мультизапроса
- Функция mysqli_stmt::next_result() - Читает следующий набор строк из мультизапроса
- Функция mysqli_stmt::$num_rows() - Возвращает число строк в результате запроса
- Функция mysqli_stmt::$param_count() - Возвращает количество параметров в запросе
- Функция mysqli_stmt::prepare() - Подготовка SQL запроса к выполнению
- Функция mysqli_stmt::reset() - Сбрасывает результаты выполнения подготовленного запроса
- Функция mysqli_stmt::result_metadata() - Возвращает метаданные результирующей таблицы подготавливаемого запроса
- Функция mysqli_stmt::send_long_data() - Отправка данных блоками
- mysqli_stmt::$sqlstate
- Функция mysqli_stmt::store_result() - Передает результирующий набор запроса на клиента
Коментарии
It appears that an UPDATE prepared statement which contains the same data as that already in the database returns 0 for affected_rows. I was expecting it to return 1, but it must be comparing the input values with the existing values and determining that no UPDATE has occurred.