За последние 24 часа нас посетили 22270 программистов и 1174 робота. Сейчас ищут 656 программистов ...

Проверка на существование в базе

Тема в разделе "PHP для новичков", создана пользователем aziz, 30 дек 2006.

  1. aziz

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

    С нами с:
    1 фев 2006
    Сообщения:
    194
    Симпатии:
    0
    Адрес:
    Ташкент
    Здравствуйте друзья! Всех С Новым Годом!!!
    Надеюсь с Вашей помощью разобратьса в моей маленкой проблеме связанной с проверкой существования записи в бд. Проблема в том что не зависимо есть эта запись или нет скрипт всё равно добоаляет такуюже. К примеру в базе существует логин test и если я ввожу такой же логин вместо того что бы сообщить о её существовании скрипт исправно вставляет такой же, у меня с этой проблемой ничего не получается, может посоветуете что. Вот код:
    PHP:
    1.  
    2. <?php require_once('Connections/test.php');
    3.     mysql_select_db($database) or die ("Немогу выбрать базу ");
    4.    
    5.    
    6.     $result = mysql_query("SELECT * FROM 'users' WHERE login = $login");
    7.   if(@mysql_num_rows($result) > 0 ) {  
    8.   echo "Извините такой логин уже есть";
    9. }
    10.  
    11. else{
    12.  
    13. $query=mysql_query("INSERT into users (id, login, passwd, email, status) values ('', '".$login."', '".$passwd."', '".$email."', '')");
    14.  
    15.  
    16.   echo "Получилось!";
    17. }
    18.     ?>
    Ещё раз с Новым Годом, счастья и успехов всем!!!
     
  2. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    проверить существование записи в таблице можно так:
    Код (Text):
    1. SELECT true FROM users WHERE login = '".$login."'
    вернёт единицу в случае успешного выполнения запроса.
     
  3. aziz

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

    С нами с:
    1 фев 2006
    Сообщения:
    194
    Симпатии:
    0
    Адрес:
    Ташкент
    уже пробовал
    PHP:
    1. $result = mysql_query("SELECT * FROM 'users' WHERE login = '".$login."'");
    2.   if(@mysql_num_rows($result) > 0 ) {  
    3.   echo "Извините такой логин уже есть";
    4. }
    но результат тот же
     
  4. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    и чего не получается
    PHP:
    1.  
    2. <?php
    3.  
    4. $connect = @mysql_connect("localhost", "root", "*****") or die("Can`t connect to MySQL server");
    5. $sdb = @mysql_select_db("phpbb", $connect) or die( mysql_error() );
    6.  
    7. $query = mysql_query("SELECT true FROM hight_users WHERE username = 'Hight'");
    8.  
    9. print_r(mysql_fetch_row($query)); // выводит единицу
    10.  
    11. ?>
    12.  
     
  5. aziz

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

    С нами с:
    1 фев 2006
    Сообщения:
    194
    Симпатии:
    0
    Адрес:
    Ташкент
    спасибо за помощь проблема была в
    Код (Text):
    1. FROM users WHERE
    у меня было
    Код (Text):
    1. FROM 'users' WHERE
    Ещё раз с наступающим!!!!
     
  6. simpson

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

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    aziz, а теперь представьте такую ситуацию: во время проверки, когда поиск логина в таблице пользователей не дал результатов (логина еще не существует), от совершенно другого пользователя, который решил с таким же логином регистрироваться, ушел запрос на запись в таблицу. а потом еще и от текущего пользователя будет запись. итого, опять в таблице 2 одинаковых логина.
    я бы на вашем месте просто поставил UNIQUE ключ на это поле.
     
  7. aziz

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

    С нами с:
    1 фев 2006
    Сообщения:
    194
    Симпатии:
    0
    Адрес:
    Ташкент
    Я с этим пока не сталкивался, можно ли узнать по подробнее...
     
  8. aziz

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

    С нами с:
    1 фев 2006
    Сообщения:
    194
    Симпатии:
    0
    Адрес:
    Ташкент
    спасибо, нащёл и поставил.
     
  9. Alek86

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

    С нами с:
    3 янв 2007
    Сообщения:
    35
    Симпатии:
    0
    А разве нельзя как-то с транзакциями это побороть?
     
  10. Anonymous

    Anonymous Guest

    Сам понял, что сказал?
     
  11. Петр

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

    С нами с:
    20 мар 2006
    Сообщения:
    1.253
    Симпатии:
    0
    Адрес:
    Центр Вселенной
    Горбунов Олег, умное слово =)
     
  12. Anonymous

    Anonymous Guest

    Петр, где?
     
  13. Mavir

    Mavir Guest

    Горбунов Олег, - транзакция
     
  14. Anonymous

    Anonymous Guest

    ааа... а к чему оно тут?
     
  15. Anonymous

    Anonymous Guest

     
  16. Mavir

    Mavir Guest

    Ну узнал человек слово умное и решил своими знаниями поделиться с остальными.
     
  17. aziz

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

    С нами с:
    1 фев 2006
    Сообщения:
    194
    Симпатии:
    0
    Адрес:
    Ташкент