Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: mysql_num_rows всегда возвращает 1
 
 автор: allforweb   (09.04.2011 в 16:00)   письмо автору
 
 

Столкнулся с проблемой при работе с 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);


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

  Ответить  
 
 автор: cheops   (09.04.2011 в 16:36)   письмо автору
 
   для: allforweb   (09.04.2011 в 16:00)
 

Когда вы подсчитываете количество строк при помощи MySQL-функции COUNT() результирующая строка содержит одну запись, и эта запись как раз содержит количество подсчитываемых строк. Получить их можно при помощи функции mysql_result()
<?php
  
...
  
$query "SELECT COUNT(*) FROM `table` WHERE `name`='$name'";
  
$sql mysql_query($query);
  if(!
$sql) exit("Ошибка в запросе - ".mysql_error());
  echo 
mysql_result($sql0);
?>
PS В последнем запросе mysql_num_rows() должна вернуть корректный результат, однако у вас SQL-запрос записан с ошибкой, поэтому он не выполняется и mysql_num_rows() возвращает 0. Лучше всегда проверять правильность выполнения запроса, как это указано выше - PHP и MySQL разные среды, они не знают об ошибках друг друга и не предупреждают о них. Если всегда будете проверять правильность выполнения запросов - съэкономите себе множество времени.

  Ответить  
 
 автор: allforweb   (09.04.2011 в 16:46)   письмо автору
 
   для: cheops   (09.04.2011 в 16:36)
 

Большое Спасибо за подсказку.

P.S. Я всегда делаю проверку функцией mysql_error() - здесь ее не привел, чтобы сократить вопрос.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования