2014-10-14 2 views
3

При попытке предотвратить регистрацию пользователя, если имя пользователя существует. Вот мой код:Проверьте, существует ли в базе данных имя пользователя

include('../connection.php'); 
//get all the names and values that have been posted. 
    $username = $_POST['username']; 
    //check if username exists 
    $sql = "SELECT * FROM tbl_Freelancers WHERE User_Username = '".$username."'"; 
    $result = mysqli_query($con,$query); 
    if(mysql_num_rows($result)>=1) 
     { 
     echo"name already exists"; 
     } 
    else 
     { // excecute insert query 

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

+4

Что именно не работает? Какую ошибку вы получаете? – Rikesh

+0

Пожалуйста, объясните, в чем проблема? – Puneet

+1

Кроме того, вы должны обучить себя инъекциям SQL. При такой конструкции кто-то может сбрасывать или удалять каждую таблицу в вашей базе данных. http://en.wikipedia.org/wiki/SQL_injection –

ответ

4

изменение mysql_num_rows в mysqli_num_rows

if(mysqli_num_rows($result)>=1)//You are mixing the mysql and mysqli, change this line of code 
      { 
      echo"name already exists"; 
      } 
     else 
      { // 

использовать привязать параметр или пропустить его, прежде чем использовать его в запросе.

+0

Спасибо, смешно, что могут сделать свежая пара глаз. – MattClaff

+0

@MattClaff вам следует избегать $ username, чтобы избежать инъекций sql, поскольку он поступает из пользовательского ввода, чтобы посмотреть на [real-escape-string] (http://php.net/manual/en/mysqli.real-escape-string .php) – Fougere

+0

@ Arif_suhail_123 Я не возражаю, важно указать, что, поскольку это все еще распространенные ошибки, которых можно избежать с помощью некоторой хорошей оценки. Обе линии делают pointm PDO хорошим инструментом, взглянув на него, может быть приятно, но в то же время я считаю, что настоящая escape-строка является хорошим компромиссом. Вы также должны указать своп $ sql и $ query, который Jayakarthik Appasamy указывает на его ответ – Fougere

0

изменить свой запрос на:

$sql= "SELECT * FROM tbl_Freelancers WHERE User_Username = '$username'"; 

$result=mysql_query($sql); 

if(mysql_num_rows($result)!=0) 
     { 
     echo"name already exists"; 
     } 
    else 
     { 
     // excecute insert query 
     } 
2

изменение ..

$sql = "SELECT * FROM tbl_Freelancers WHERE User_Username = '".$username."'"; 
    $result = mysqli_query($con,$query); 

в

$sql = "SELECT * FROM tbl_Freelancers WHERE User_Username = '".$username."'"; 
    $result = mysqli_query($con,$sql); 

вы указали запрос в $ SQL и выполнения в $ запроса ... также получить ввод как ..

$username = mysqli_real_escape_string($con, $_POST['username']); 

по соображениям безопасности ...

0

mysql_num_rows нежелателен из PHP 5.5.0, и будет удален в будущем

Так используйте альтернативным mysqli_num_rows

+1

спасибо. я буду держать это в своем уме :) –

0
try this 

include('../connection.php'); 
$username = $_POST['username']; 
    $sql = "SELECT * FROM tbl_Freelancers WHERE User_Username = '".$username."'"; 
    $result = mysql_query($sql); 
    if(mysql_num_rows($result)!=0) 
     { 
     echo"name already exists"; 
     } 
    else 
     { 
     echo "........."; 
} 
-1

вашего $query переменного должен быть второй аргумент в mysqli_query, вместо этого вы использовали $sql. поэтому замените $sql на $ query в mysqli_query() функции и использования mysqli вместо mysql_num_rows()

Смежные вопросы