[英]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_函數。 password_hash
。 header(Location:);
搬遷指令應緊跟一個腳本終止如exit;
或die();
session_start()
只能在腳本頂部被調用一次 。 編輯:
正如路加福音所闡明的:
實際的問題是
mysql_real_escape_string
僅接受一個參數(即mysql_real_escape_string($ POST ['username']);)。 無論是否使用MySQLi,都可以使用它,但是,如果使用准備好的語句,則應避免使用它。
嘿,我發現了問題。 它在插入部分。 我的編輯器中有“用戶”,數據庫中有“ user_info”。 因此,我只是將“用戶”更改為“ user_info”。 非常感謝您的幫助。 我怎么給你信用?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.