gpt4 book ai didi

php - 使用 mysqli 对象使用 php 对象连接到 mysql 的最佳方法

转载 作者:行者123 更新时间:2023-11-30 21:23:20 25 4
gpt4 key购买 nike

如果我的 php 应用程序中有一个连接到数据库的对象,假设我正在使用 mysqli 作为我的数据库事务的对象。

例子:

$dbase = new mysqli('localhost','dbuser','dbpass','dbname');
$oresult = $dbase->query("SELECT `field` FROM `table` WHERE `otherfield` = 12;");
if($oresult->num_rows > 0) {
$row = $oresult->fetch_row();
$data = $row[0];
}

但我有另一个自定义对象要与数据库通信。

<?php
class Thing {
private $sql = '';
public $results = '';

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

private function get_data() {
// get the stuff from the dbase using $this->sql
$this->results = 'whatever';
}
}

$thing = new Thing("SELECT `field` FROM `table` WHERE 1");
// do whatever i want with $thing->results
?>

在我有'//get the stuff from the dbase using $this->sql'行的地方我想连接到数据库并获取数据。

最好是创建一个新的 mysqli 对象(我发现它有问题,因为我需要将连接信息传递给我拥有的每个对象)还是我可以通过使用以某种方式引用我已经拥有的对象

global $dbase

在 get_data 函数中。

什么是最佳实践?

最佳答案

为数据库连接创建一个包装器类。包装器可以是单例,也可以将 mysqli 连接存储在静态字段中。

class DB {
static public $_connection;
static function connection(...) {
if (! self::$_connection) {
self::$_connection = mysqli_connect(...);
}
return self::$_connection;
}
}

这还可以轻松隔离用户凭据,将它们存储在单个脚本或配置文件中。

您可以使用 DB 类本身,而不是 DB 类公开连接。将connection() 变成一个构造器,编写一个prepare() 方法和一个DBStatement 类。

class DB {
static private $_connection;
function __construct(...) {
if (! self::$_connection) {
self::$_connection = mysqli_connect(...);
}
}
// returns an SQLStatement
function prepare($query) {
}
}

关于php - 使用 mysqli 对象使用 php 对象连接到 mysql 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1641316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com