2

为什么我在使用这个 mysqli_real_escape_string() 时一直收到这个错误?

mysqli_real_escape_string() expects exactly 2 parameters, 1 given in C:\xampp\htdocs\beatbeast\reg.php on line 6

我已经通过了连接,以及需要清理的字符串,但我怎么会一直收到这个错误?

这是我的代码

<?php
    class Db_DatabaseUtilities{

        public static function registerAccount($conn,$username,$password,$email){
            if(!isset($conn)){
                    echo"XDDDDDDDDD";
            }
            $username = mysqli_real_escape_string($conn,$username);
            $email =mysqli_real_escape_string($conn,$username);
            $password = mysqli_real_escape_string($conn,$password);
            $hashedpass = crypt($password,$username);

            $sql = "INSERT INTO accounts ('username','password','email') VALUES('{$username}','{$hashedpass}','{$email}')";
            Db_DatabaseUtilities::perform_query($conn, $sql);
        }

        public static function perform_query($conn,$sql){
            $result_set = $conn->query($sql);
            if(!$result_set){
                die("Die Database Query Failed");
            }else{
                return $result_set;
            }
        }       
    }
4

2 回答 2

3

第一:如果这是您的真实代码,那么您将转义$username两次,而$email根本没有转义:

$username = mysqli_real_escape_string($conn,$username);
$email =mysqli_real_escape_string($conn,$username);//should probably be $email as second param

你有两个问题的选择:

  1. 您的数据库连接不正确...检查您的连接并确保它具有编码集。
  2. 您的输入数据错误...您的参数之一可能不是有效的字符串

我看不到任何其他选择...祝你好运

于 2012-06-24T11:41:46.413 回答
0

检查第 6 行reg.php

string mysqli_real_escape_string ( mysqli $link , string $escapestr )

您需要将 mysqli 连接作为第一个参数传递。

于 2012-06-24T11:29:48.110 回答