我目前正在做一个小项目,为了上帝的爱,我无法让这个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();