2016-08-13 25 views
1

問題について多くのスレッドをチェックしましたが、それでも機能しません。PHPのユーザー名が既に存在していない場合

usernameを入力すると、存在しないusernameが作成されます。しかし、既に私のdbに登録されているユーザー名を入力すると、まだ登録されています。ここで

は、レジスタのための私のPHP/HTMLページです:

$error = false; 
if(isset($_POST['signup'])) { 

$name = mysqli_real_escape_string($con, $_POST['name']); 
$email = mysqli_real_escape_string($con, $_POST['email']); 
$password = mysqli_real_escape_string($con, $_POST['password']); 
$cpassword = mysqli_real_escape_string($con, $_POST['cpassword']); 

$sql = "SELECT name FROM users WHERE name='".mysql_real_escape_string($name)."'"; 
$query = mysqli_query($sql); 
if(mysql_num_rows($query)){ 
    $error = true; 
    $ckname_error = "Nom d'utilisateur déjà enregistré!"; 
} else { unset($ckname_error); } 


if (!$error) { 
     if(mysqli_query($con, "INSERT INTO users(name,mail,password,rank) VALUES('" . $name . "', '" . $email . "', '" . md5($password) . "', 'user')")) { 
      $successmsg = "Successfully Registered! <a href='login.php'>Click here to Login</a>"; 
      header("Location: login.php"); 
     } else { 
      $errormsg = "Error in registering...Please try again later!"; 
     } 
    } 
+1

これは悪いです。 pd0 –

+1

を使用する 'mysql'と' mysqli'を混合しています – C2486

+0

Aleksandarと全く同意します。 PDOを使用してください。 – Redhart

答えて

1

mysql_機能。

1.変更:

$sql = "SELECT name FROM users WHERE name='".mysql_real_escape_string($name)."'"; 

へ:

$sql = "SELECT name FROM users WHERE name='$name'"; 

2.変更

$query = mysqli_query($sql); 

へ:

$query = mysqli_query($con,$sql); 

3.変更に

if(mysql_num_rows($query)) 

if(mysqli_num_rows($query)) 
1

あなたは$conを逃した、とmysqli_num_rowsを使用しないでmysql_num_rowsあなたとmysqli_を混合しているので、あなたが信頼できない結果を取得している

$query = mysqli_query($con,$sql); 
if(mysqli_num_rows($query)){ 
0

あなたはmysqli_query($ sqlを)を使用しています。 mysql_num_rows()の代わりに 'mysqli_num_rows()'を使用してください。 PHP reference - mysqli_num_row

int型はmysql_num_rows(リソース$結果)あなたはmysqli_queryを使用している場合、あなたはint型mysqli_num_rows(mysqli_resultの$結果)を使用しているはずのに対し、リソースタイプを期待 - mysqli_resultsを期待しています。

動作している場合はお知らせください。

関連する問題