Как проверить, закрыто ли соединение с базой данных в MySQLi и OOP PHP? - PullRequest
0 голосов
/ 06 февраля 2019

Я могу открыть и запросить базу данных, используя следующие два класса, но я не уверен, правильно ли я закрыл соединение с базой данных в этой строке

 $this->conn->close(); 

Я пытался проверить это с помощью ping()но я ничего не получаю на странице

   if($this->conn->ping()){
       echo "still Open";
   }
   else{
       echo "It is Closed";
   }

Как и где я должен закрыть соединение и проверить его?

<?PHP
class dbconnect {
    public $DBSERVER;
    public $DBUSERNAME;
    public $DBPASSWORD;
    public $DBNAME;

    function __construct() {
    }    
    protected function DbStart(){
        $this->DBSERVER     = "localhost";
        $this->DBUSERNAME = "root";
        $this->DBPASSWORD = "";
        $this->DBNAME   = "ttmmyyyy";
        $conn = new mysqli($this->DBSERVER, $this->DBUSERNAME, $this->DBPASSWORD, $this->DBNAME);
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        }
        return $conn;
    }
}
?>

<?PHP
include_once('dbconnect.cls.php');
class SetMetas extends dbconnect {
    private $page;
    private $region;

    function __construct() {
        $this->conn =  $this->DbStart();
    }

   public function GetData($vID){
        $this->id   = $vID;
         if ($stmt = $this->conn->prepare("SELECT `name`,`pricw` FROM orders WHERE `id` = ?")){
            $stmt->bind_param("s", $this->id);
            $stmt->execute();
            $stmt->store_result();
           if($stmt->num_rows === 0) exit('No rows');
            $stmt->bind_result($namerow,$pricerow);
            $stmt->fetch();
            return array(
                'name'         => $namerow, 
                'price'       => $pricerow
            );
            $stmt->free_result();
            $stmt->close();

            $this->conn->close();   
    if($this->conn->ping()){
     echo "still Open";
    }
    else{
     echo "It is Closed";
  }
          }

    }
}
?>

1 Ответ

0 голосов
/ 06 февраля 2019

Вы можете переписать свой класс dbconnect следующим образом:

<?PHP
class DbAdapter {
    protected $DBSERVER;
    protected $DBUSERNAME;
    protected $DBPASSWORD;
    protected $DBNAME;
    protected $conn;

    public function __construct(){
        $this->DBSERVER     = "localhost";
        $this->DBUSERNAME = "root";
        $this->DBPASSWORD = "";
        $this->DBNAME   = "ttmmyyyy";
    }

    public function connect()
    {
        $conn = new mysqli($this->DBSERVER, $this->DBUSERNAME, $this->DBPASSWORD, $this->DBNAME);
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        }
        $this->conn = $conn;
    }

    public function closeConnection(): bool
    {
        return mysqli_close($this->conn);
    }
}
?>

Функция mysqli_close

Возвращает TRUE в случае успеха или FALSE в случае неудачи.

Так что вы можете проверить это соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...