簡體   English   中英

如何在構造函數中將mysql轉換為mysqli數據庫連接

[英]How to convert mysql to mysqli database connection in the constructor

我只是想在構造函數中將mysql轉換為mysqli數據庫連接。

db.php

<?php
define('SERVER', 'localhost');
define('USERNAME', 'root');
define('PASSWORD', 'password');
define('DATABASE', 'database');
class DB {
    function __construct(){
        $connection = mysqli_connect(SERVER, USERNAME, PASSWORD,DATABASE);
    }
}
?>

users.php

<?php
class Users {
    function __construct(){
        $db = new DB();
    }

    public function read(){
        $query = mysqli_query($db,"select use_id, use_name, use_email FROM users");
        while ($row = mysqli_fetch_array($query,MYSQLI_ASSOC)){
            $data[] = $row;
        }
        return $data;
    }
}
?>

result.php

<?php require_once('db.php'); ?>
<?php require_once('users.php'); ?>
<?php
$Users = new Users();
$users = $Users->read();
?>

我嘗試將mysql更改為mysqli方法,但未連接,並且在某處讀取了實例化db連接的實例,這是一個壞主意:請您能解釋一下原因,以及是否有更好的方法可以輕松使用db連接在每個需要的班上嗎?

更好的做法是將DB實例傳遞給Users類。 假設您有一個Registration類,一個Login類等。它們的所有構造函數都會創建一個新的MySQL連接嗎? 這似乎不是一個好主意,因為它們所有人都可以使用相同的數據庫連接。

class Users {

    private $db;

    public function __construct($db) {
        $this->db = $db;
    }

....
}

$db = new DB();
$users = new Users($db);
<?php
define('SERVER', 'localhost');
define('USERNAME', 'root');
define('PASSWORD', '');
define('DATABASE', 'wall');
 $db = mysqli_connect(SERVER, USERNAME, PASSWORD,DATABASE);


class Users {
   private $db;

    public function __construct($db) {
        $this->db = $db;
    }

    public function read(){
        $query = mysqli_query($this->db,"select * FROM users");
        while ($row = mysqli_fetch_array($query,MYSQLI_ASSOC)){
            $data[] = $row;
        }
        return $data;
    }
}

//$db = new DB();
$U = new Users($db);
$users = $U->read();

 foreach($users as $user){
        echo $user['username'] ;
    }

?>

手冊所述, mysqli_connect接受第4個參數作為數據庫。 嘗試

$connection = mysqli_connect(SERVER, USERNAME, PASSWORD, DATABASE);
if (!$connection) {
    die('Connect Error (' . mysqli_connect_errno() . ') '
            . mysqli_connect_error());
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM