MySQL 数据库连接类,函数不返回任何结果


MySQL Database connection class, function not returning any results

我目前正在做一个小项目,为了上帝的爱,我无法让这个PHP类工作。

问题是,当我在此处键入和插入或任何其他命令时,doQuery 不返回任何内容或修改数据库,即使从类中调用也始终返回 false。

class CONN {
    private $connection;
    public function __construct() {
        $this->connection = new mysqli($address, $user, $pass, $db);
        if ($this->connection->connect_error) {
            // Throw error here
        } else {
            $this->doQuery("SET NAMES 'utf8'");
        }
    }
    public function doQuery($query){
        return $this->connection->query($this->connection->real_escape_string($query));
    }
}

解决
real_escape_string甚至'都逃脱了,因此查询无法正常工作。

我认为你的代码永远不会那样工作,我看到的主要问题是以下一段代码:

$this->connection = new mysqli($address, $user, $pass, $db);

$adress、$user、$pass$db从何而来?也许你错过了构造函数参数。

仅将real_escape_string用于转义变量(通常由用户提交),例如

$this->doQuery("SELECT * FROM table WHERE something='".$this->connection->real_escape_string($_POST['data'])."'"

不转义整个查询

public function doQuery($query){
    return $this->connection->query($query);
}

您需要创建/提供其他类参数。创建对象时,类构成器需要这些值来建立连接。所以:

class Con
{
    private $address;
    private $username;
    private $password;
    private $database;
    public function __construct($address, $username, $password,$database)
    {
        $this->address = $address;
        $this->username = $username;
        $this->password = $password;
        $this->database = $database;
    }
    public function connect()
    {
        $con = mysqli_connect($this->address, $this->username, $this->password, $this->database);
        return $con;
    }
}

$conobject = new Con("localhost","root","","mybase");
$convar = $conobject->connect();