Определение количества строк в выборке
Одной из распространенных задач при выборке из базы данных является определение числа записей, которые возвращает функция mysql_query().
Для этого предназначена функция mysql_num_rows (), которая имеет следующий синтаксис:
int mysql_num_rows(resource result)
В качестве единственного аргумента result функция принимает дескриптор запроса, возвращаемый функцией mysql_query ().
Эта функция работает только с запросами SELECT.
Чтобы получить количество рядов, обработанных командами INSERT, UPDATE, DELETE, следует использовать функцию mysql_affected_rows().
Функция mysql_num_fields() позволяет определить число столбцов в результате.
Функция mysql_query () в случае успеха всегда возвращает дескриптор соединения и f alse только в случае ошибочного синтаксиса SQL-запроса, поэтому проверка соответствия пароля в листинге ниже ошибочна, т. к. такая проверка будет срабатывать в любом случае, даже если число возвращенных записей окажется равным нулю.
Пример ошибочной проверки пароля:
<?php
// Устанавливаем соединение с базой данных
include "config.php";
// Формируем SQL-запрос
$query = "SELECT * FROM authors
WHERE name = `имя` AND pass = `пароль`";
// Выполняем SQL-запрос
$ath = mysql_query($query);
// Проверяем успешность выполнения SQL-запроса
if(!$ath)
{
exit("Ошибка авторизации!");
}
else
{
Echo "Авторизация пройдена!";
}
?>
В этом случае следует использовать функцию mysql_num_rows (), как это продемонстрировано в листинге ниже.
Пример корректной проверки пароля
<?php
// Устанавливаем соединение с базой данных
include "config.php";
// Формируем SQL-запрос
$query = "SELECT * FROM authors
WHERE name = `имя` AND pass = `пароль`";
// Выполняем SQL-запрос
$ath = mysql_query($query);
// Проверяем успешность выполнения SQL-запроса
if(mysql_num_rows($ath) == 0)
{
exit("Ошибка авторизации!");
}
else
{
echo("Авторизация пройдена!");
}
?>
Число строк можно так же определить при помощи отдельного SQL-запроса, воспользовавшись встроенной функцией MySQL — COUNT ():
SELECT COUNT(*) FROM authors;