|
|
|
| Столкнулся с проблемой при работе с 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);
|
Кто-то можем подсказать, как правильно с ней работать. Задача простая, перед добавлением и редактированием записи - проверить чтобы не было дубликата? | |
|
|
|
|
|
|
|
для: 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($sql, 0);
?>
| PS В последнем запросе mysql_num_rows() должна вернуть корректный результат, однако у вас SQL-запрос записан с ошибкой, поэтому он не выполняется и mysql_num_rows() возвращает 0. Лучше всегда проверять правильность выполнения запроса, как это указано выше - PHP и MySQL разные среды, они не знают об ошибках друг друга и не предупреждают о них. Если всегда будете проверять правильность выполнения запросов - съэкономите себе множество времени. | |
|
|
|
|
|
|
|
для: cheops
(09.04.2011 в 16:36)
| | Большое Спасибо за подсказку.
P.S. Я всегда делаю проверку функцией mysql_error() - здесь ее не привел, чтобы сократить вопрос. | |
|
|
|