2016-10-22 59 views
0
我不能把我的用戶信息數據庫

我的代碼:使用mysqli_query

<?PHP 

session_start(); 
$user = 'root'; 
$password = 'root'; 
$db = 'Authentication'; 
$host = 'localhost'; 
$port = 3306; 

$link = mysqli_init(); 
$success = mysqli_real_connect(
    $link, 
    $host, 
    $user, 
    $password, 
    $db, 
    $port 
); 
if(isset($_POST['sbtn'])){ 
    session_start(); 
    $f_name = mysqli_real_escape_string($_POST['f_name']); 
    $l_name = mysqli_real_escape_string($_POST['l_name']); 
    $email = mysqli_real_escape_string($_POST['email']); 
    $pass = mysqli_real_escape_string($_POST['pass']); 
    $c_pass = mysqli_real_escape_string($_POST['c_pass']); 

    if($pass == $c_pass){ 
     //create user 
     $Password = md5($pass); 
     mysqli_query($success, $db); 

     $query = "INSERT INTO users(email, password, f_name, l_name) VALUES ($email, $pass, $f_name, $l_name)"; 
     mysqli_query($success, $query); 
    }else{ 
     //tell user they are not equal 
     echo("The two passwords did not match"); 
    } 
} 

mysqli_close($success); 
?> 

這似乎是所有的代碼,其餘的工作,因爲我有錯誤校驗代碼,我是新來的編碼在PHP爲此,我正在努力瞭解我如何能夠克服這個問題!

幫助將不勝感激!

+0

如果你是新來的PHP,我建議你去學習PDO,而不是mysqli的。這與你的問題無關,但我仍然需要說出來。 – modu

+0

您是否嘗試將生成的查詢輸出到屏幕上,然後直接在mysql中執行以查看發生了什麼? (提示:行情) –

回答

-1

嘗試改變:

$query = "INSERT INTO users(email, password, f_name, l_name) VALUES ($email, $pass, $f_name, $l_name)"; 

到:

$query = "INSERT INTO users(email, `password`, f_name, l_name) VALUES ('$email', '$pass', '$f_name', '$l_name')"; 

說明: When to use single quotes, double quotes, and backticks in MySQL

然後:

mysqli_query($success, $db); 
mysqli_query($success, $query); 
mysqli_close($success); 

到:

mysqli_query($link, $db); 
mysqli_query($link, $query); 
mysqli_close($link); 

最後:

mysqli_query($link, $query); 

到:

$result = mysqli_query($link, $query); 
    if (!$result) { 
     echo '<pre>'; 
     var_dump(mysqli_error_list($link)); 
     echo '</pre>'; 
    } 

(用於調試)

說明:

對不起我的(差)英語

所有這些替換完成($成功 - > $鏈接),因爲這些功能要求其返回由mysqli_connect()mysqli_init()鏈路標識符,但你通過$成功(布爾值) http://php.net/manual/en/mysqli.query.php(程序風格的要求)

變化:

$f_name = mysqli_real_escape_string($_POST['f_name']); 
$l_name = mysqli_real_escape_string($_POST['l_name']); 
$email = mysqli_real_escape_string($_POST['email']); 
$pass = mysqli_real_escape_string($_POST['pass']); 
$c_pass = mysqli_real_escape_string($_POST['c_pass']); 

$f_name = mysqli_real_escape_string($link,$_POST['f_name']); 
$l_name = mysqli_real_escape_string($link,$_POST['l_name']); 
$email = mysqli_real_escape_string($link,$_POST['email']); 
$pass = mysqli_real_escape_string($link,$_POST['pass']); 
$c_pass = mysqli_real_escape_string($link,$_POST['c_pass']); 

說明: mysqli_real_escape_string需要鏈路標識符由mysqli_connect()返回或mysqli_init()。 http://php.net/manual/en/mysqli.real-escape-string.php(程序風格的要求)

+0

我建議增加一些解釋,說明這將如何解決OP的問題。 – RamenChef

+0

感謝這工作,但它填補了與空信息的數據庫,你會有任何線索,爲什麼它的工作一旦改變,以及如何我可以解決它發送通過沒有信息? –

+0

添加了一些解釋。通過正確使用mysqli_real_escape_string()函數修復了空值問題http://php.net/manual/en/mysqli.real-escape-string.php(程序風格需求) –