2016-04-24 62 views
-2

嗨,我已经在谷歌过去3小时,我只是无法找到我在我的代码中的错误,我总是得到(抱歉,您的注册失败,请返回并重试。)像我的注册查询是空的。我想我有它虽然权利...感谢您的帮助,我做了一些变化,但仍无法做到这一点:/无法通过mysqli插入到mysql数据库

<?php 
if(!empty($_POST['username']) && !empty($_POST['password'])&& !empty($_POST['password1'])) 
{ 

    $servername = "localhost"; 
    $name = "root"; 
    $pass = ""; 
    $dbname = "users"; 
    $link = mysqli_connect($servername, $name, $pass, $dbname); 
if (!$link) { 
    die("Connection failed: " . mysqli_connect_error()); 
    } 
} 

    $username = mysqli_real_escape_string($link,$_POST['username']); 
    $password = password_hash($_POST['password'], PASSWORD_DEFAULT); 
    $password1 = password_hash($_POST['password1'], PASSWORD_DEFAULT); 
    $email = mysqli_real_escape_string($link,$_POST['email']); 
    $checkusername = mysqli_query($link,"SELECT * FROM users WHERE Username = '".$username."'"); 
    if(mysqli_num_rows($checkusername) == 1) 
    { 
     echo "<h1>Error</h1>"; 
     echo "<p>Sorry, that username is taken. Please go back and try again.</p>"; 
    } 
    else 
    { 
     $registerquery = mysqli_query($link,"INSERT INTO users (ID,Username,Password,EmailAddress) VALUES(NULL,'".$username."', '".$password."', '".$email."')"); 
     echo($registerquery); 
     if($registerquery) 
     { 
      echo "<h1>Success</h1>"; 
      echo "<p>Your account was successfully created. Please <a href=\"index.php\">click here to login</a>.</p>"; 
     } 
     else 
     { 
      echo "<p>Sorry, your registration failed. Please go back and try again.</p>";  
     }  
    } 
mysqli_close($link); 
?> 
+1

BTW你使用MySQL逃避应mysqli的。在散列之前我不会逃避密码。并考虑使用password_hash而不是md5。 –

+0

有关密码的旁注。上面已经说过不使用MD5,但是你应该阅读关于操纵密码的另一件事的以下Q&A http://stackoverflow.com/questions/36628418/cleansing-user-passwords –

回答

4
  1. 您使用mysql_real_escape_string其中用于休息使用mysqli(你应该,因为mysql_*已被弃用)。

  2. mysql_real_escape_string在没有活动的mysql连接时不起作用,并且将返回false,所以$username === false。先连接,然后逃生。

您需要在这里使用的功能是mysqli_real_escape_string($link, $var)