这是使用php oop和mysqli的正确方法吗?

时间:2016-05-23 09:49:26

标签: php oop mysqli

我在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的代码。

0 个答案:

没有答案