[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: mysql_num_rows всегда возвращает 1
allforweb
Столкнулся с проблемой при работе с mysql_num_rows. Задача простая - перед добавление записи в базу - проверить наличие такой записи, аналогично при редактировании, перед UPDATE - выполнить проверку на дубликат. Но почему-то mysql_num_rows всегда возвращает или 1 или 0. Специально создал в базе несколько одинаковых полей и сделал выборку через PhpMyAdmin и функцию COUNT() - все поситано правильно, а вот mysql_num_rows - работает как-то загадочно. Эксперименты с синтаксисом запроса - ничего не дали.
Вот примеры кода, которые использовались:
$sql = mysql_query("SELECT COUNT(name) FROM `table` WHERE `name`='.$name.'"); 
$sql = mysql_query("SELECT COUNT(*) FROM `table` WHERE `name`='.$name.'");
$sql = mysql_query("SELECT * FROM `table` WHERE `name`='.$name.'");//здесь вообще не сработало
echo mysql_num_rows($sql);

Кто-то можем подсказать, как правильно с ней работать. Задача простая, перед добавлением и редактированием записи - проверить чтобы не было дубликата?



Спустя 6 минут, 7 секунд (9.04.2011 - 15:05) DarkStalker написал(а):
$a = mysql_query("SELECT * FROM posts", $db);
$num = mysql_num_rows($a);
echo $num;


я так делал и получалось.

Спустя 3 минуты, 8 секунд (9.04.2011 - 15:08) neadekvat написал(а):
allforweb, посмотрите здесь пункт 2. Это что касается третьего запроса.

Спустя 4 минуты, 29 секунд (9.04.2011 - 15:13) minok94 написал(а):
Попробуй сделать так:
$sql1 = mysql_query("SELECT COUNT(name) FROM `table` WHERE `name`='.$name.'"); 
$sql2 = mysql_query("SELECT COUNT(*) FROM `table` WHERE `name`='.$name.'");
$sql3 = mysql_query("SELECT * FROM `table` WHERE `name`='.$name.'");

$sql = 0;
$sql += mysql_num_rows($sql1);
$sql += mysql_num_rows($sql2);
$sql += mysql_num_rows($sql3);

echo $sql;


Хотя могу и ошибаться...

Спустя 23 секунды (9.04.2011 - 15:13) Trianon написал(а):
allforweb
Цитата
SELECT COUNT(name) FROM `table` WHERE `name`='$name'
SELECT COUNT(*) FROM `table` WHERE `name`='$name'

что касается первых двух - а сколько строк такой запрос должен возвращать?
Он возвращает ровно одно число (ответ на вопрос) - то есть одну ячейку одной строки. Всегда.
Эту вот жирную единицу Вы и получаете.

Спустя 36 минут, 38 секунд (9.04.2011 - 15:50) allforweb написал(а):
Цитата (Trianon @ 9.04.2011 - 12:13)
allforweb
Цитата
SELECT COUNT(name) FROM `table` WHERE `name`='$name'
SELECT COUNT(*) FROM `table` WHERE `name`='$name'

что касается первых двух - а сколько строк такой запрос должен возвращать?
Он возвращает ровно одно число (ответ на вопрос) - то есть одну ячейку одной строки. Всегда.
Эту вот жирную единицу Вы и получаете.

Всем спасибо. Разобрался.
Вот верное решение:
$query = "SELECT COUNT(*) FROM `table` WHERE `name`='$name'"; 
$sql = mysql_query($query);
if(!$sql) exit("Ошибка в запросе - ".mysql_error());
echo mysql_result($sql, 0);
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.