За последние 24 часа нас посетили 18765 программистов и 1704 робота. Сейчас ищет 901 программист ...

Не могу отправить данные в БД

Тема в разделе "PHP и базы данных", создана пользователем Yan9, 6 авг 2015.

  1. Yan9

    Yan9 Новичок

    С нами с:
    6 авг 2015
    Сообщения:
    4
    Симпатии:
    0
    Добрый день! Пишу обработчик для формы, в которую пользователь вносит логин, пароль. Создаю запрос в БД для проверки существующего пароля, если такого нет, то вносим новые данные, все работает, запрос выглядит так:
    Код (PHP):
    1. $res=mysql_query("SELECT * FROM users WHERE pass=".$password); // users-таблица, pass-поле 
    Далее писал условие и если пароль совпадал, то данные не вносились, все работает ОК.
    Но нужно еще проверить существует ли в базе такой логин (в БД поле name) и пароль, написал такую строку:
    Код (PHP):
    1. $res=mysql_query("SELECT * FROM users WHERE name=".$log." AND pass=".$password); 
    Но все это начало работать некорректно, потом я решил сделать только проверку логина и написал:
    Код (PHP):
    1. $res=mysql_query("SELECT * FROM users WHERE name=".$log); 
    Все дальнейшие условия начали игнорироваться, данные с одинаковым логином вносились, появилась ошибка
    Код (PHP):
    1. mysql_fetch_array() expects parameter 1 to be resource, boolean given
    Поискал по форуму, нашел одну функцию, если пишу:
    Код (PHP):
    1. mysql_query($res) || die(mysql_error()); 
    то на экране:
    Код (PHP):
    1. Query was empty 
    Если пишу:
    Код (PHP):
    1. mysql_query("select * from users WHERE name=".$log) || die(mysql_error()); 
    то на экране:
    Код (PHP):
    1. Unknown column 'Логин' in 'where clause' 
    Почему так происходит, я ведь только заменил одно поле на другое и пароль на логин, должно же работать одинаково, правильно? Спасибо!

    Вопрос закрыт! Решение: надо было переменную, в которой лежит новый логин, взять в кавычки (таков синтаксис, а ранее при проверке пароля ошибка почему-то игнорировалась)
    Код (PHP):
    1. $res=mysql_query("SELECT * FROM users WHERE name='.$log'"); 
    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    name - это есть логин?*
     
  3. Yan9

    Yan9 Новичок

    С нами с:
    6 авг 2015
    Сообщения:
    4
    Симпатии:
    0
    Да, name-это имя поля в таблице
     
  4. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Yan9, я понял что это имя поля. Это имя поля где храниться логин пользователя? или же его имя? и еще name зарезервированное имя в mysql
     
  5. Yan9

    Yan9 Новичок

    С нами с:
    6 авг 2015
    Сообщения:
    4
    Симпатии:
    0
    Да, это имя поля где хранится логин пользователя.
    Изменил имя поля на log, в коде поменял, но все равно результат такой же.
     
  6. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Побольше инфы
    покажи весь код где ты это проделываешь. И код вставь как полагается.
     
  7. Yan9

    Yan9 Новичок

    С нами с:
    6 авг 2015
    Сообщения:
    4
    Симпатии:
    0
    Вот форма:
    Код (PHP):
    1. <?php
    2. include_once("pages/functions.php");
    3. $logform='<form action="pages/login.php" method="post"/>
    4. <input type="text" name="uname" />
    5. <input type="password" name="upass" />
    6. <input type="checkbox" name="reg" />
    7. <input type="submit" name="submit" value="OK" />
    8. </form>';
    9. echo $logform; 
    Вот обработчик формы (в файле login.php)
    Код (PHP):
    1. <?php    
    2.     include_once ("functions.php"); // тут подключаемся к файлу, в котором содержится код подключения к БД
    3.     connect();
    4.     if(isset($_REQUEST['submit'])&&isset($_REQUEST['reg'])) // если нажата кнопка и поставлена галочка на чекбоксе
    5.     {
    6.         $log=htmlspecialchars(trim($_REQUEST['uname']));
    7.         $password=htmlspecialchars(trim($_REQUEST['upass']));
    8.         $res=mysql_query("select * from users where log=".$log);
    9.         $row=mysql_fetch_array($res,MYSQL_NUM);
    10.         if(!empty($row))
    11.         {
    12.             echo "Введите другой логин";
    13.             echo "<br/><a href='http://localhost/yan/6answers/site2/index.php'>На Главную</a>";
    14.         }
    15.         else
    16.         {
    17.             $inc='insert into users(log,pass) values("'.$log.'","'.$password.'")';
    18.             mysql_query($inc);
    19.             echo "Поздравляем, вы зарегистрированы!";
    20.             echo "<br/><a href='http://localhost/yan/6answers/site2/index.php'>На Главную</a>";
    21.         }
    22.     }
    23.     else
    24.     {
    25.         echo "Поставьте галочку для регистрации";
    26.         echo "<br/><a href='http://localhost/yan/6answers/site2/index.php'>На Главную</a>";
    27.     }
    28. ?>
     
  8. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.