我在php oop方面不是很有经验。此外,当mysqli附带php oop时,它让我更加困惑于以最有效的方式使用它。无论如何,首先看看我的连接类:
<?php
//connectionclass.php
class connection{
public $conn;
public $warn;
public $err;
function __construct(){
$this->connect();
}
private function connect(){
$this->conn = @ new mysqli('localhost', 'sever_user', 'user_password');
if ($this->conn->connect_error) {
$this->conn = FALSE;
$this->warn = '<br />Failed to connect database! Please try again later';
}
}
public function get_data($qry){
$result = $this->conn->query($qry);
if($result->num_rows>=1){
return $result;
}else{
$this->err = $this->conn->error;
return FALSE;
}
$result->free();
}
public function post_data($qry){
$this->conn->query($qry);
if($this->conn->affected_rows>=1){
return TRUE;
}else{
$this->err = $this->conn->error;
return FALSE;
}
}
}
?>
现在请使用mysql数据库存储和获取数据的php页面结构:
<?php
//login.php
include('/include/connectionclass.php');
$db = new connection();
$query = "SELECT * FROM USERS WHERE user_country='India'";
$data = $db->get_data($query);
if($data){
while($row=$data->fetch_assoc()){
echo 'User Name: ':.$row["user_name"].' Age: '.$row["age"];
}
}
?>
所以我的login.php使用连接类来获取有关用户的数据。所有的事情都运行良好。但有一件事让我感到困惑。在connectionclass.php $this->conn
本身就是一个对象,因为它调用new mysqli
。所以这是另一个对象$db
内的一个对象。此外,当我使用$data = $db->get_data($query);
时,方法$db
在对象get_data
内创建结果集,然后将此结果集复制到login.php中的变量$data
中页。
所以根据我的说法,实际上有两个结果集/数据集在这里创建,一个在db对象内,一个在login页面内。使用mysqli和php从mysql数据库获取数据集是正确的方法吗?当数据集较大时(当必须为许多用户获取大量数据时),它会使用更多的内存和服务器资源吗?
如果不是正确的方法,请解释你的观点,请给我一些可以有效用于php oop和mysqli的代码。