вопрос: Как проверить существует ли некое поле в базе?
например в случае регистрации. нужно проверить существует ли такой пользователь в базе или нет.
заранее спасибо
Спустя 15 минут, 43 секунды (28.11.2009 - 15:02) sergeiss написал(а):
Так "существует ли поле в базе (в таблице)" или "существует ли определенное значение в поле"?
Судя по словам - первое, а судя по сути - второе.
Судя по словам - первое, а судя по сути - второе.
Спустя 13 минут, 48 секунд (28.11.2009 - 15:16) masdeft написал(а):
второе)
Спустя 8 минут, 35 секунд (28.11.2009 - 15:25) Argnist написал(а):
SELECT * FROM table WHERE user='username' это чтоли?) Если трудно запомнить команды, пользуйтесь PhpMyAdmin, выбирайте действия, смотрите что делает и какой SQL пишет.
Спустя 14 минут, 49 секунд (28.11.2009 - 15:40) DedMorozzz написал(а):
if (isset($result))
Спустя 40 минут, 49 секунд (28.11.2009 - 16:20) Ka4_0k написал(а):
mysql_num_rows? Просто при нормальном запросе, даже если такой строки нету всё равно вернётся true
Спустя 2 минуты, 27 секунд (28.11.2009 - 16:23) sergeiss написал(а):
Цитата (DedMorozzz @ 28.11.2009 - 16:40) |
if (isset($result)) |
Ответ какой-то непонятный... И, похоже, еще и не верный.
PS.
Более правильно будет сначала
Цитата (Argnist @ 28.11.2009 - 16:25) |
SELECT * FROM table WHERE user='username' |
И затем
Цитата (Ka4_0k @ 28.11.2009 - 17:20) |
mysql_num_rows |
Спустя 8 минут, 35 секунд (28.11.2009 - 16:31) masdeft написал(а):
всем спасибо =)
Спустя 27 минут, 49 секунд (28.11.2009 - 16:59) DedMorozzz написал(а):
Почему же не верно. делаем запрос на выборку (выше описано), далее сохраняем в переменую, едиственное, что не тока если сущ, а и не равна введённому значению.
Спустя 32 минуты, 36 секунд (28.11.2009 - 17:32) Shturman написал(а):
if(mysql_query("SELECT COUNT(id) FROM `users` WHERE `username`='Vasya'", $db)
{
...
}
Если количество юзеров с именем Vasya больше 0, то вернется 1 - true.
Как-то так...
Спустя 4 минуты, 54 секунды (28.11.2009 - 17:37) Argnist написал(а):
ниправда, даже если count = 0 выдаст true
обычно делаю if (($res = mysql_query($sql)) && mysql_num_rows($res) > 0) {}
обычно делаю if (($res = mysql_query($sql)) && mysql_num_rows($res) > 0) {}
Спустя 3 часа, 41 минута, 56 секунд (28.11.2009 - 21:19) sergeiss написал(а):
Цитата (DedMorozzz @ 28.11.2009 - 17:59) |
Почему же не верно. делаем запрос на выборку (выше описано), далее сохраняем в переменую, едиственное, что не тока если сущ, а и не равна введённому значению. |
Твое выражение if (isset($result)) непонятное потому, что непонятно, что за переменная $result.
Если предположить, что было выполнено что-то типа $result=mysql_fetch_assoc(....), то выражение if (isset($result)) будет неверным!!! isset проверяет наличие указанной переменной. И она будет существовать!!! Пусть она будет равна false, но это не отсутствие переменной.
Спустя 2 часа, 34 минуты, 44 секунды (28.11.2009 - 23:53) Joker написал(а):
Цитата (sergeiss @ 28.11.2009 - 18:23) |
PS. Более правильно будет сначалаЦитата (Argnist @ 28.11.2009 - 16:25) SELECT * FROM table WHERE user='username' И затем Цитата (Ka4_0k @ 28.11.2009 - 17:20) mysql_num_rows |
а если у нас двадцать полей в таблице, зачем нам их все достовать если нам нужно лишь проверить на существование???
Правильнее всё же будет
SELECT COUNT(*) as `count` FROM table WHERE user='username' LIMIT 1
Спустя 8 минут, 22 секунды (29.11.2009 - 00:02) sergeiss написал(а):
Joker - можно и так, если нужно только количество узнать Я, на самом деле, не сильно "парил свой мозХ", потому что пусть это делать топикстартер. Главное - ему дали мысль, а он пусть дальше сам думает. Голова же - она не только для того, чтобы шапку носить
А если ему надо получить какие-то другие поля из этой записи, при условии существования определеной величины в поле... То тогда "мой" вариант как раз хорош будет. И количество проверили, и данные получили.
А если ему надо получить какие-то другие поля из этой записи, при условии существования определеной величины в поле... То тогда "мой" вариант как раз хорош будет. И количество проверили, и данные получили.
Спустя 2 минуты, 54 секунды (29.11.2009 - 00:05) Joker написал(а):
Цитата (sergeiss @ 29.11.2009 - 02:02) |
если нужно только количество узнать |
Нужно узнать не количество а существует ли такая запись!) делать выборку тут без смысленно согласись? мой вариант подходит сюда на все 100% и другого не может быть в данной ситуации. Темболее в том варианте сначало нужно сделать выборку а после один фиг посчитать сколько записей в результате запроса выдало.
Спустя 9 минут, 47 секунд (29.11.2009 - 00:14) sergeiss написал(а):
Цитата (Joker @ 29.11.2009 - 01:05) |
делать выборку тут без смысленно согласись? мой вариант подходит сюда на все 100% и другого не может быть в данной ситуации. |
Насчет полной выборки я уже сказал
Цитата (sergeiss @ 29.11.2009 - 01:02) |
на самом деле, не сильно "парил свой мозХ", потому что пусть это делать топикстартер. |
Спустя 2 минуты, 57 секунд (29.11.2009 - 00:17) Joker написал(а):
Цитата (sergeiss @ 29.11.2009 - 02:14) |
Насчет полной выборки я уже сказал |
Блин как часто бывает после дн сиденья за программ кодом не дочитываю пост до конца, сорри.
Спустя 7 часов, 43 минуты, 18 секунд (29.11.2009 - 08:01) Sylex написал(а):
Цитата (Joker @ 29.11.2009 - 03:05) |
Нужно узнать не количество а существует ли такая запись!) |
тогда зачем ты считаешь количество?
Цитата (Joker @ 29.11.2009 - 02:53) |
SELECT COUNT(*) as `count` FROM table WHERE user='username' LIMIT 1 |
Спустя 4 минуты, 18 секунд (29.11.2009 - 08:05) Argnist написал(а):
угу, если просто узнать достаточно SELECT id ... и не тратить ресурсы на count )