[英]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'] ;
}
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.