2016-07-22 4 views
1

Я пытаюсь сделать регистрационную форму, в которой я подключился к базе данных, а также проверить, уникально ли имя пользователя или нет, но, к сожалению, я не могу вставить новые данные в свои Таблица. Я был бы очень признателен, если бы кто-нибудь мог мне помочь в этом.Canit вставить в мою таблицу MYSQL

<?php 
error_reporting(E_ALL^E_DEPRECATED); 
include 'connect.inc.php'; 
if(isset($_POST['submit'])) { 
    $username = mysql_real_escape_string($_POST['username']); 
    $password = mysql_real_escape_string($_POST['password']); 
    $password2 = mysql_real_escape_string($_POST['password2']);  
    $firstname = mysql_real_escape_string($_POST['firstname']); 
    $lastname = mysql_real_escape_string($_POST['lastname']); 

    //md5 password 
    $password_hash = md5($password); 

    //check to see if the fields are empty 
    if(empty($username) || empty($password)|| empty($firstname)|| empty($lastname)) { 
     echo "Not all fields filled!<br /><br />"; 
     exit(); 
    } 

    //check if password is equal 

    if($password != $password2) { 
     echo "Your Passwords Do Not Match.<br />"; 
     exit(); 
    } else { 
     $query = "SELECT `username` From `users` WHERE username='$username'"; 
     $result = mysql_query($query); 

     if(mysql_num_rows($result) ==1) { 
      echo "Sorry, that user has already exists."; 
      exit(); 
     } else { 
      $query1= mysql_query("INSERT INTO `users` ('',username,password,firstname,lastname) VALUES ('','$username',  '$password_hash', '$firstname', '$lastname'"); 
      if($result1 = mysql_query($query1)) { 
       echo "Registered Successfully"; 
      } else { 
       echo "Sorry, You could not Register";   
      } 
     } 
    } 
} 

?> 
<form action="" method="POST"> 
    Username:<br /> 
    <input type="text" name="username" /><br /><br />   

    Password:<br /> 
    <input type="password" name="password" /><br /><br /> 

    Confirm Password:<br /> 
    <input type="password" name="password2" /><br /><br /> 

    First Name:<br /> 
    <input type="text" name="firstname" /><br /><br /> 

    Last Name:<br /> 
    <input type="text" name="lastname" /><br /><br /> 

    <input type="submit" value="Register" name="submit" /> 
</form> 
+5

Удалите пробел из запроса INSERT. – Bailey

+1

Также не используйте функции mysql_ *. См. Этот вопрос для получения дополнительной информации: http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php – Michael

+0

Покажите инструкцию CREATE в своей таблице, мне трудно верить (_as @ Бейли указал), что MySQL позволил вам иметь безымянный столбец. _ Даже если бы это было так, я не уверен, что это позволит вам разграничить его с одинарными кавычками._ – Uueerdo

ответ

2

В инструкции INSERT отсутствует закрывающая скобка.

$query1= mysql_query("INSERT INTO ... '$lastname'"); 

$query1= mysql_query("INSERT INTO ... '$lastname')"); 
               ^

Кстати, я считаю, что проще при выполнении одной строки INSERT использовать альтернативный синтаксис, так что имена столбцов и значения сопоставляются:

$query1= mysql_query("INSERT INTO `users` SET 
    username='$username', 
    password='$password', 
    firstname='$firstname', 
    lastname='$lastname'"); 

Это легче сделать убедитесь, что у вас есть столбцы, сопоставленные с правильными переменными. Также нет закрывающих круглых скобок, о которых можно было бы беспокоиться.

См. http://dev.mysql.com/doc/refman/5.7/en/insert.html для получения более подробной информации об этом синтаксисе.


Вы также должны отказаться от устаревшего расширения mysql и вместо этого использовать PDO. Прочтите этот хороший учебник: https://phpdelusions.net/pdo

И Джей Бланшард прав, что ваш код небезопасен. Безопасность, как и правильность, не является надстройкой. Вы упомянули, что вы новичок, но вы не должны начинать разрабатывать вредные привычки. Прочитано https://blog.codinghorror.com/youre-probably-storing-passwords-incorrectly/

0

Вы хотите, вероятно, вставить идентификатор пользователя в database.Define его как Autoincrement е удалить пустые данные ниже запроса:

До:

$query1= mysql_query("INSERT INTO `users` ('',username,password,firstname,lastname) VALUES ('','$username',  '$password_hash', '$firstname', '$lastname'"); 

После :

$query1= mysql_query("INSERT INTO `users` (username,password,firstname,lastname) VALUES ('$username',  '$password_hash', '$firstname', '$lastname')") or die(mysql_error()); 

И вам нужно также заменить строку с кодом if($result1 = mysql_query($query1)) { на if($result1) {

+0

Пробовал это тоже, но он все еще вторит другому результату, который «Извините, вы не смогли зарегистрироваться». –

+0

Не могли бы вы использовать mysql_error(), чтобы проверить, что происходит? – msantos

+0

Можете ли вы сказать мне, где это поставить? –

0

Try используя

$query1= mysql_query("INSERT INTO users (username,password,firstname,lastname) VALUES ('$username', '$password_hash', '$firstname', '$lastname'"); 
+0

Пробовал это тоже, но он все еще вторит другому результату, который «Извините, вы не смогли зарегистрироваться». –

0

Заменить еще блок с

else { 
    die('Error: ' . mysql_error()); 
    //echo "Sorry, You could not Register"; 
} 

Из вашего комментария, ваш ВСТАВИТЬ QUERY неправильно. Чтобы узнать, что не так с вашим SQL-запросом, добавьте var_export($query1, true) с die. т. е.

die('Error: ' . mysql_error().'<br>Info: '.var_export($query1, true)); 

Я предполагаю, что вы по-прежнему используете свой старый запрос, который имеет «как одно из имен столбцов».

+0

«У вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее вашей версии сервера MariaDB, для правильного синтаксиса, используемого рядом с« 'в строке 1 », решите это и примите мои наилучшие пожелания! –