За последние 24 часа нас посетили 16529 программистов и 1566 роботов. Сейчас ищут 2053 программиста ...

Создание записи в базе и ее проверка

Тема в разделе "PHP и базы данных", создана пользователем 1stTester, 3 авг 2017.

  1. 1stTester

    1stTester Новичок

    С нами с:
    3 авг 2017
    Сообщения:
    2
    Симпатии:
    0
    Доброго времени суток. Появилась задача вводить через браузер emаil в базу и проверять ее на дубликат. Так как опыт с php оставляет желать лучше, был написан скромный кодик такого вида
    PHP:
    1.  <?php
    2. $host = "192.***.***.***";
    3. $user = "***";
    4. $password = "***";
    5. $db = "****";
    6. if (!$conn = mysql_connect($host, $user, $password))
    7. {
    8. echo "<h2>MySQL Error!</h2>";
    9. }
    10. $email = $_POST['email'];
    11. $manager = $_POST['manager'];
    12. $data= $_POST['data'];
    13.  
    14. $result = mysql_query("SELECT email FROM Clients WHERE email='$email'");
    15. $myrow = mysql_fetch_array($result);
    16. if (!empty($myrow['id'])) {
    17. exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин.");
    18. }
    19.  
    20. header("Location: index.php");    
    21. ?>
    Проблема в том, что код либо добавляет в базу наши значения без проверки, либо пропускает шаг проверки и просто добавляет такую же запись.
    В какую сторону копать, чтобы исправить эту проблему?? Как вообще правильно поставить условия, чтобы они выполнялись последовательно и не пропускались.
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.861
    Симпатии:
    751
    Адрес:
    Татарстан
    запрашиваете
    а потом проверяете
     
  3. 1stTester

    1stTester Новичок

    С нами с:
    3 авг 2017
    Сообщения:
    2
    Симпатии:
    0
    PHP:
    1. $check="SELECT email FROM Clients WHERE email = $email";  
    2. $rs = mysqli_query($con, $check);
    3. $data = mysqli_fetch_array($check, $rs, MYSQLI_NUM);
    4. if(!empty($data['email']))
    5. {
    6.     echo "User Already in Exists<br/>";
    7. }
    Сделал чек, как вы сказали, но все равно внесение данных проходит сквозь него.
    Я правильно написал то, что вы имели ввиду?
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.798
    Симпатии:
    1.331
    Адрес:
    Лень
    нет не правильная логика, как меня раньше поправляли, теперь моя очередь :)
    место !empty($data['email'])
    мы проверяем на кол-во возвращаемых строк с бд rowCount
    --- Добавлено ---
    https://github.com/MouseZver/Mouse_Project/blob/master/inc/Page/register/init.php
    --- Добавлено ---
    на архитектуру класса не обращаем внимание, а всего лишь смотрим реализацию хода проверки во функции
    public static function RegisterAccount()
    --- Добавлено ---
    65 строка тоже интересна
     
  5. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.861
    Симпатии:
    751
    Адрес:
    Татарстан
    MYSQLI_NUM ??? будет нумерованый массив
    посмотри через print_r($data);
    и поймеш что с чем сравнивать