Определение количества строк, возвращенных запросом

Задача
Требуется узнать, какое количество строк возвратил запрос SELECT, или сколько строк были изменены запросом INSERT, UPDATE или DELETE.

Решение
Количество строк, возвращенных запросом SELECT, определяется с помощью метода PEAR DB DB_Result:: numRows():

// запрос
$sth = $dbh->query('SELECT * FROM zodiac WHERE element LIKE ?',
array('water'));
$water_rows = $sth->numRows();
// подготавливаем и выполняем
$prh = $dbh->prepare('SELECT * FROM zodiac WHERE element LIKE ?');
$sth = $dbh->execute($prh,array('fire'));
$fire_rows = $sth->numRows();

Для определения количества строк, измененных запросом INSERT, UPDATE или DELETE, применяется метод DB::affectedRows():

$sth = $dbh->query('DELETE FROM zodiac WHERE element LIKE ?',array('fire'));
$deleted_rows = $dbh->affectedRows();
$prh = $dbh->prepare('INSERT INTO zodiac (sign,symbol) VALUES (?,?)',
array('Leap Day','Kangaroo'));
$dbh->execute($prh,$sth);$inserted_rows = $dbh->affectedRows();
$dbh->query('UPDATE zodiac SET planet = ? WHERE sign LIKE ?',
array('Trantor','Leap Day'));
$updated_rows = $dbh->affectedRows();

Обсуждение
Количество строк в результирующем множестве – свойство этого множества, поэтому метод numRows() применяется к спецификатору оператора, а не базы данных.


Однако количество строк, задействованных в запросе обработки, не может быть свойством результирующего множества, поскольку такие запросы не возвращают результатов. Как следствие, функция affectedRows() является методом спецификатора базы данных.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Автоматическое присваивание уникальных значений идентификаторов
Выполнение запросов к базе данных SQL
Извлечение строк без цикла
Кэширование запросов и результатов
Модификация данных в базе данных SQL

Вернуться в раздел: PHP / 10. Доступ к базам данных