【问题标题】:I've got some errors in my code [duplicate]我的代码中有一些错误[重复]
【发布时间】:2016-08-13 04:51:56
【问题描述】:

警告:mysqli_real_escape_string() 需要 2 个参数,1 在第 28 行的 C:\xampp\htdocs\login2\login.php 中给出

警告:mysqli_real_escape_string() 需要 2 个参数,1 在第 29 行的 C:\xampp\htdocs\login2\login.php 中给出

警告:mysqli_select_db() 期望参数 1 为 mysqli,字符串 在第 31 行的 C:\xampp\htdocs\login2\login.php 中给出

警告:mysqli_num_rows() 期望参数 1 为 mysqli_result, 第 35 行 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
}
}
?>

【问题讨论】:

  • $db = mysqli_select_db("server1", $conn); 不必要的行。和$conn = mysqli($servername, $username, $password,$dbname); 不要将过程方法与面向对象方法混为一谈
  • 有;;在 $query 第 35 行中。
  • 您需要做的就是查看这些函数的 php 手册页。错误是不言自明的。我可以告诉你从 mysql_real_escape_string 要求你传递你的数据库连接开始。它使用客户端信息来确定字符集规则。如果您使用绑定参数,则不需要使用该函数。
  • 你读错了吗?

标签: php html mysqli


【解决方案1】:

您可以同时使用程序风格或面向对象的风格。由于更鼓励使用面向对象的方法,因此我将展示这一点。

...
$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();

解决这个问题所需要做的就是正确检查文档http://php.net/docs.php

【讨论】:

    【解决方案2】:

    请查看Syntax of mysqli_real_escape_string

    您还需要提及 $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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-13
      • 1970-01-01
      相关资源
      最近更新 更多