我遇到了将PHP脚本连接到localhost服务器上的数据库的问题。 我已经发布了下面的代码,它是在网站上启用用户注册。 输入框在我运行代码时显示,但在我尝试完成注册时没有任何更新数据库。 作为PHP的新手,我不太了解它可以发现我可能犯的任何错误,或者他们的意思。 关于这个主题的任何帮助将不胜感激,因为有很多关于PHP在线的信息,但我宁愿知道导致此错误的原因是为了防止它在将来发生。
以下是浏览器控制台中出现的错误:
无法加载资源:服务器响应状态为404(未找到)
ReferenceError:无法找到变量:$
来自MAMP的UNIX套接字代码(我不知道这适合的位置):
$user = 'root';
$password = 'root';
$db = 'inventory';
$socket = 'localhost:/Applications/MAMP/tmp/mysql/mysql.sock';
$link = mysql_connect(
$socket,
$user,
$password
);
$db_selected = mysql_select_db(
$db,
$link
);
PHP代码:
//connect to database
$db = mysql_connect("localhost", "root", "", "authentication");
if (isset($_POST['register_btn'])) {
session_start();
$username =mysql_real_escape_string($_post['username']);
$email =mysql_real_escape_string($_post['email']);
$password =mysql_real_escape_string($_post['password']);
$password2 =mysql_real_escape_string($_post['password2']);
if ($password == $password2) {
//create user
$password = md5($password); //hash password before storing for security
$sql = "INSERT INTO users(username, email, password) VALUES('$username', '$email', '$password')";
mysql_query($db, $sql);
$_SESSION['message'] = "Find a Table";
$_SESSION['username'] = $username;
header("location: HomePage.html"); //redirect to homepage
}else{
$_SESSION['message'] = "Your passwords must match to proceed";
}
}
?>
答案 0 :(得分:0)
从哪里开始?这么多问题。
首先,您正在使用已在最新版本的PHP中完全删除的OLD mysql函数。请改用mysqli功能。旧函数如mysql_connect和mysql_query have been deprecated。您需要在此代码中查找所有出现的 mysql _ ,并考虑将每个命令替换为新的命令。
您可以定义此代码以进行连接:
$user = 'root';
$password = 'root';
$db = 'inventory';
$socket = 'localhost:/Applications/MAMP/tmp/mysql/mysql.sock';
$link = mysql_connect(
$socket,
$user,
$password
);
$db_selected = mysql_select_db(
$db,
$link
);
然后你不使用结果连接 - 甚至检查它是否有效。您应该始终检查mysqli_connect返回的值,看它是否真的有效或者是否返回 FALSE 。你再次重新连接,不要费心检查是否有效:
//connect to database
$db = mysql_connect("localhost", "root", "", "authentication");
在这样做的过程中,您将$ db重新定义为其他内容。
此外,您运行查询时不检查它是否成功:
mysql_query($db, $sql);
$_SESSION['message'] = "Find a Table";
$_SESSION['username'] = $username;
header("location: HomePage.html"); //redirect to homepage
您应该检查mysqli_query的结果(而不是代码中的mysql_query)以查看它返回的内容。如果INSERT查询有效,则该值为TRUE。
重定向后,您无法调用exit,这意味着重定向尝试后面的所有代码可能最终都会实际执行。