我第一次在PHP和MySQL环境中工作.. 我的连接问题又出现了问题。 我无法在它们之间建立连接。 我正在尝试为登录页面制作代码。 我的数据库名称和所有这些都是正确的。 这是我的代码..
<?php
$con = NULL;
if (empty($_POST['username']) || empty($_POST['password'])) {
$error="Username or Password is invalid";
}
else {
global $con;
$con=mysqli_connect("localhost","root","","student");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
else {
$sql = "select * from login where password='" . $_POST['password'] . "' AND username='" . $_POST['username'] . "'";
echo $sql;
$query=mysqli_query($sql,$con);
$rows=mysqli_num_rows($query);
echo $rows;
if ($rows==1) {
$_SESSION['login_user'] = $_POST['username'];
//Initializing Session
header("location: /pages/profile.php"); //Redirecting to other page
} else {
$error = "Username or Password is invalid";
}
}
//SQL query to fetch information of registered users and finds user match.
//Closing Connection
mysql_close($con);
}
?>
错误:
Warning: mysqli_query() expects parameter 1 to be mysqli, string given in C:\xampp\htdocs\pages\login.php on line 21
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in C:\xampp\htdocs\pages\login.php on line 24
Warning: mysql_close() expects parameter 1 to be resource, object given in C:\xampp\htdocs\pages\login.php on line 39
答案 0 :(得分:3)
第一个警告告诉您完全错误:
警告:mysqli_query()要求参数1为mysqli,第21行的C:\ xampp \ htdocs \ pages \ login.php中给出的字符串
在这里定义变量:
$con=mysqli_connect("localhost","root","","student");
// ...
$sql = "select * from login where password='" . $_POST['password'] . "' AND username='" . $_POST['username'] . "'";
因此$con
是mysqli
对象,$sql
是字符串。然后你调用函数:
$query=mysqli_query($sql,$con);
您正在传递字符串,然后传递连接。错误说第一个对象应该是连接。像这样:
$query=mysqli_query($con,$sql);
此外, 这很重要 ...我意识到你刚刚开始并且只是学习这些概念。但 确保您在编写将在任何实时系统中使用的任何代码或负责任何用户数据的代码之前,先了解此 。您的代码 对SQL注入攻击持开放 。基本上,任何用户都可以完全访问您的数据库,可能还有服务器。请从reading this开始。
此代码目前的功能,即使您可能不知道, 执行用户输入为代码 。显然,您不希望任何用户能够在您的服务器上执行他们想要的任意代码,但目前这正是您所允许的。再一次,你是新手,所以这是一个可以理解的错误。我不是要责怪你,只是让你相信这一点的重要性。特别是当您的网站开始包含用户数据时。