2016-08-13 14 views
1

Ich habe viele Threads über mein Problem überprüft, aber es wird immer noch nicht funktionieren.PHP-Benutzername existiert bereits, wenn es nicht

Wenn ich Benutzername eingeben, die nicht existiert, wird es den Benutzernamen werfen wurde noch erstellt. Aber wenn ich einen Benutzernamen eingebe, der bereits in meiner Datenbank registriert ist, registriert er sich immer noch.

Hier ist meine PHP/HTML-Seite für das Register:

$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

Das ist schlecht. Verwenden Sie pdO –

+1

Sie mischen mysql und mysqli – C2486

+0

Stimmen Sie völlig mit Aleksandar überein. Verwenden Sie PDO. – Redhart

Antwort

1

Sie unzuverlässige Ergebnisse bekommen, weil Sie mysqli_ mit Misch sind mysql_ Funktionen.

1. Änderung:

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

zu:

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

2. ändern

$query = mysqli_query($sql); 

zu:

3. ändern

if(mysql_num_rows($query)) 

zu:

if(mysqli_num_rows($query)) 
1

Sie verfehlten $con und mysqli_num_rows verwenden nicht mysql_num_rows

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

Sie verwenden mysqli_query ($ sql). Sie hätten 'mysqli_num_rows()' anstelle von mysql_num_rows() verwenden sollen. PHP reference - mysqli_num_row

int mysql_num_rows (resource $ result) erwartet Art Ressource, während, wenn Sie mysqli_query verwenden, Sie int mysqli_num_rows verwendet haben sollte (MySQLi_Result $ result) - erwartet mysqli_results.

Lassen Sie uns wissen, ob es funktioniert.

Verwandte Themen