Php 我的代码中有一些错误
警告:mysqli\u real\u escape\u字符串正好需要2个参数,1 在第28行的C:\xampp\htdocs\login2\login.php中给出 警告:mysqli\u real\u escape\u字符串正好需要2个参数,1 在第29行的C:\xampp\htdocs\login2\login.php中给出 警告:mysqli_select_db希望参数1为mysqli,string 在第31行的C:\xampp\htdocs\login2\login.php中给出 警告:mysqli_num_行希望参数1是mysqli_结果, 第35行C:\xampp\htdocs\login2\login.php中给出的字符串 有人能帮我弄清楚吗? 下面是我的代码Php 我的代码中有一些错误,php,html,mysqli,Php,Html,Mysqli,警告:mysqli\u real\u escape\u字符串正好需要2个参数,1 在第28行的C:\xampp\htdocs\login2\login.php中给出 警告:mysqli\u real\u escape\u字符串正好需要2个参数,1 在第29行的C:\xampp\htdocs\login2\login.php中给出 警告:mysqli_select_db希望参数1为mysqli,string 在第31行的C:\xampp\htdocs\login2\login.php中给出 警告:
<?php
session_start(); // Starting Session
$error=''; // Variable To Store Error Message
if (isset($_POST['submit'])) {
if (empty($_POST['username']) || empty($_POST['password'])) {
$error = "Username or Password is invalid";
}
else
{
// Define $username and $password
$username=$_POST['username'];
$password=$_POST['password'];
// Establishing Connection with Server by passing server_name, user_id and password as a parameter
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "server1";
// Create connection
$conn = new mysqli($servername, $username, $password,$dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// To protect mysqli injection for Security purpose
$username = stripslashes($username);
$password = stripslashes($password);
$username = mysqli_real_escape_string($username);
$password = mysqli_real_escape_string($password);
// Selecting Database
$db = mysqli_select_db("server1", $conn);
// SQL query to fetch information of registerd users and finds user match.
$query = "select * from account where password='$password' AND username='$username'";
$result = mysqli_query($conn, $query) or trigger_error("Query Failed! SQL: $query - Error: ". mysqli_error($mysqli), E_USER_ERROR);;
$rows = mysqli_num_rows($query);
if ($rows == 1) {
$_SESSION['login_user']=$username; // Initializing Session
header("location: profile.php"); // Redirecting To Other Page
} else {
$error = "Username or Password is invalid";
}
mysqli_close($conn); // Closing Connection
}
}
?>
请查收
您还需要提到$con变量:
$username = mysqli_real_escape_string($con, $username);
$password = mysqli_real_escape_string($con, $password);
此外,您已经在此行中指定了数据库:
$conn = new mysqli($servername, $username, $password,$dbname);
所以,下面这一行是多余的。您只需删除以下内容:
$db = mysqli_select_db("server1", $conn);
您可以使用过程样式或面向对象样式。由于面向对象的方法更受鼓励,我将展示这一点
...
$username = $conn->real_escape_string($username);
$password = $conn->real_escape_string($password);
...
$db = $conn->select_db("server1"); //redundant line
...
$result = $conn->query( $query)
$rows = $conn->num_rows($query);
...
$conn->close();
解决这个问题所需要的只是正确地检查文档$db=mysqli\u select\u dbserver1,$conn;不必要的线路。$conn=mysqli$servername、$username、$password、$dbname;不要将传统方法与面向对象方法混为一谈;;在$query第35行中,您所需要做的就是查看这些函数的php手册页面。这些错误是不言自明的。我可以告诉您,首先,mysql\u real\u escape\u字符串要求您传递数据库连接。它使用客户端信息来确定字符集规则。如果使用绑定参数,则不需要使用该函数,应该使用绑定参数。是否读取了错误?