gpt4 book ai didi

php - 扩展 MySQLi 类

转载 作者:行者123 更新时间:2023-12-02 05:32:15 24 4
gpt4 key购买 nike

我希望能够创建扩展 MySQLi 类的类来执行它的所有 SQL 查询。

$mysql = new mysqli('localhost', 'root', 'password', 'database') or die('error connecting to the database');

如果不全局化 $mysql 对象以在我的其他方法或类中使用,我不知道如何做到这一点。

class Blog {

public function comment() {
global $mysql;

//rest here
}

}

如有任何帮助,我们将不胜感激。

谢谢。

最佳答案

我正在做类似的事情。我很高兴这个封装了数据库登录的单例类。

<?php
class db extends mysqli
{
protected static $instance;
protected static $options = array();

private function __construct() {
$o = self::$options;

// turn of error reporting
mysqli_report(MYSQLI_REPORT_OFF);

// connect to database
@parent::__construct(isset($o['host']) ? $o['host'] : 'localhost',
isset($o['user']) ? $o['user'] : 'root',
isset($o['pass']) ? $o['pass'] : '',
isset($o['dbname']) ? $o['dbname'] : 'world',
isset($o['port']) ? $o['port'] : 3306,
isset($o['sock']) ? $o['sock'] : false );

// check if a connection established
if( mysqli_connect_errno() ) {
throw new exception(mysqli_connect_error(), mysqli_connect_errno());
}
}

public static function getInstance() {
if( !self::$instance ) {
self::$instance = new self();
}
return self::$instance;
}

public static function setOptions( array $opt ) {
self::$options = array_merge(self::$options, $opt);
}

public function query($query) {
if( !$this->real_query($query) ) {
throw new exception( $this->error, $this->errno );
}

$result = new mysqli_result($this);
return $result;
}

public function prepare($query) {
$stmt = new mysqli_stmt($this, $query);
return $stmt;
}
}

要使用你可以有这样的东西:

<?php
require "db.class.php";

$sql = db::getInstance();

$result = $sql->query("select * from city");

/* Fetch the results of the query */
while( $row = $result->fetch_assoc() ){
printf("%s (%s)\n", $row['Name'], $row['Population']);
}
?>

关于php - 扩展 MySQLi 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1820421/

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