За последние 24 часа нас посетили 35085 программистов и 1758 роботов. Сейчас ищут 808 программистов ...

mysql_num_rows всегда возвращает 1

Тема в разделе "PHP для новичков", создана пользователем allforweb, 9 апр 2011.

  1. allforweb

    allforweb Активный пользователь

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

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    будет искать
    Код (Text):
    1. SELECT COUNT(name) FROM `table` WHERE `name`='.имя.';
    а тебе нужно, наверное
    так что пиши
    Код (Text):
    1. $sql = mysql_query("SELECT COUNT(name) FROM `table` WHERE `name`='$name'");
    или тебе нужно вот это
    Код (Text):
    1. $sql = mysql_query("SELECT id FROM `table` WHERE `name`='$name'");
    , тогда возвратится массив id-шников и mysql_num_rows($sql) возвратит количество.
    Если же доводить до ума первый вариант с COUNT(), то
    Код (Text):
    1. $sql = mysql_query("SELECT COUNT(name) FROM `table` WHERE `name`='$name'");
    2. echo mysql_result($sql,0);
    3. mysql_free_result($sql);