我正在编写简单的DB连接,当我测试它时,它不起作用。我做错了什么?文件数据库:
require_once("config.php");
class MySqlDatabase{
private $connection;
function __construct(){
$this->open_connection();
}
public function open_connection(){
$connection = mysqli_connect(DB_SERVER , DB_USER , DB_PASS , DB_NAME);
if(!$connection){
die("Database connection failed:" . mysqli_error($connection));
}
}
public function query($sql){
$result = mysqli_query($this->connection , $sql);
$this->confirm_query($result);
return $result;
}
private function confirm_query($result){
if(!$result){
die("Database query failed: ".mysqli_error($this->connection));
}
}
}
$database = new MySqlDatabase();
$db =& $database;
比我提出的要求:
if(isset ($database)) {echo"true";}else {echo "false";}
$sql ="INSERT INTO users (id, username, password, first_name, last_name)";
$sql .="VALUES (1,'olegsavchuk12','1111','Oleg','Savchuk')";
$result = $database->query($sql);
$sql = "SELECT * FROM users WHERE id=1";
$result_set = $database->query($sql);
$found_user = mysqli_fetch_all($result_set);
echo $found_user['username'];
请参阅此警告。
您的代码是干净的,除了省略了7个简单字符:$this->现在,让我们重新发布您的代码,只是这次添加$this->:
<?php
require_once("config.php");
class MySqlDatabase{
private $connection;
function __construct(){
$this->open_connection();
}
public function open_connection(){
// THIS SHOULD READ $this->connection NOT $connection
// YOU ARE IN A CLASS REMEMBER ;-)
$this->connection = mysqli_connect(DB_SERVER , DB_USER , DB_PASS , DB_NAME);
// HERE HAS ALSO THE SAME ISSUE AS ABOVE
if(!$this->connection){
// AND EVEN HERE TOO::
die("Database connection failed:" . mysqli_error($this->connection));
}
}
public function query($sql){
// INCIDENTALLY; YOU DID IT PERFECTLY HERE!!! ;-)
$result = mysqli_query($this->connection , $sql);
$this->confirm_query($result);
return $result;
}
private function confirm_query($result){
if(!$result){
die("Database query failed: ".mysqli_error($this->connection));
}
}
}
$database = new MySqlDatabase();
$db =& $database;