簡體   English   中英

用戶信息未保存到我的數據庫中

[英]user info is not being saved into my database

好的,所以我的數據庫有問題。 我正在嘗試創建一個注冊頁面,並且一切正常。 我使用的是xampp phpmyadmin,每次輸入一些信息后每次點擊注冊按鈕時,數據庫中都不會顯示任何內容。

<?php
session_start();

$db = mysqli_connect("localhost", "root", "", "saver",);


if (isset($_POST[ 'register_btn'])) {
session_start();
$username = mysql_real_escape_string($db,$POST['username']);
$email = mysql_real_escape_string($db,$POST['email']);
$password = mysql_real_escape_string($db,$POST['password']);
$password2 = mysql_real_escape_string($db,$POST['password2']);

if ($password == $password2) {
//create user
$password = md5($password); //hashes password before entering into database
$sql = "INSERT INTO users(username, email, password) VALUES('$username',     $email', $password,)"; 
mysqli_query($db, $sql);
$_SESSION['message'] = "You are now logged in";
$_SESSION['username'] = $username;
header("location: home.php"); // Redirect to home page
}else{
$_SESSION['message'] = "The two passwords do not match";
    }
}
?>

<html> 
<head>
<title> Submission form </title>
</head>

<body>
<form method="post" action="saver.php">
<table>
<tr>
<td>Username:</td>
<td><input type="text" name="username" class="textInput">
</tr>

<tr>
<td>Email:</td>
<td><input type="email" name="email" class="textInput">
</tr>

<tr>
<td>Password:</td>
<td><input type="password" name="password" class="textInput">
</tr>

<tr>
<td>Password again:</td>
<td><input type="password" name="password2" class="textInput">
</tr>

<tr>
<td></td>
<td><input type="submit" name="register_btn" value="Register">
</tr>
</table>
</form>
</body>
</html>

您可以通過打開並閱讀PHP錯誤記錄來發現並解決所有問題。 閱讀如何做

您的問題在於以下幾行:

$db = mysqli_connect("localhost", "root", "", "saver",);

$username = mysql_real_escape_string($db,$POST['username']);

首先,您的$db末尾有一個逗號,請將其刪除。 這可能會導致致命的PHP錯誤,您應該在錯誤報告中進行介紹

其次, $db對象是一個MySQLi標識符,而不是MySQL標識符,但是您已將其傳遞給MySQL_函數。 因此,腳本將因錯誤而停止,或者數據庫將插入空值。 這就是為什么您沒有保存任何內容的原因。

同樣(如Luke所述), MySQL_函數具有相反的參數順序,因此您可能只是忘記了將i添加到函數名稱中!


您還沒有正確地將值封裝在MySQL中-每個值都需要用單引號引起來,例如使用'$username'完成后,需要使用$email$arseword做相同的事情。

而且您還需要從MySQL VALUES集合中刪除結尾的逗號...

一些額外的注意事項:

  • 您在代碼中同時使用了mysqli_mysql_函數。 您應該使用MySQLi_函數。
  • 您應該認真考慮(例如;這樣做!! ),而不是過程式SQL,而是使用預處理語句
  • MD5絕對不適合哈希密碼。 停下來。 使用password_hash
  • header(Location:); 搬遷指令應緊跟一個腳本終止如exit; die();
  • session_start()只能在腳本頂部被調用一次
  • 認真使用准備好的陳述。 周圍有數百個很好的例子。
  • 通過使用和閱讀PHP錯誤日志並對其做出反應,您將節省數百小時的壓力(以及SO上的許多人)!

編輯:
正如路加福音所闡明的:

實際的問題是mysql_real_escape_string僅接受一個參數(即mysql_real_escape_string($ POST ['username']);)。 無論是否使用MySQLi,都可以使用它,但是,如果使用准備好的語句,則應避免使用它。

嘿,我發現了問題。 它在插入部分。 我的編輯器中有“用戶”,數據庫中有“ user_info”。 因此,我只是將“用戶”更改為“ user_info”。 非常感謝您的幫助。 我怎么給你信用?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM