如何使数据库对象停止函数


How to get database object out of function

>我有一个连接到数据库的函数。调用该函数后,我希望它返回数据库/连接对象,以便我能够使用该对象并对数据库执行查询。如何从函数test()返回下面的对象$mysqli以便我可以在函数外部甚至在不同的脚本中使用$mysqli。还是应该为每个查询编写一个特定的函数?

function test($user, $pass, $db, $host){
    $mysqli = new mysqli($host, $user, $pass, $db);
    if ($mysqli->connect_error) {
        die('Connect Error (' . $mysqli->connect_errno . ') '
            . $mysqli->connect_error);
    }
    else {
        echo 'Checkpoint 1 <br>';
        return $mysqli;
    }
}
test($user, $pass, $db, $host);
$sql = "SELECT * FROM `vive_user` WHERE `username` LIKE"."'$name'";
$result = $mysqli->query($sql);

我用来写大项目的有以下几点:

Class MySQL
{
    protected $_conn;
    public function __construct() {
        $this->_DB_NAME = DB_NAME;
        $this->_DB_USER = DB_USER;
        $this->_DB_PASS = DB_PASSWORD;
        $this->_DB_HOST = DB_HOST;
        $this->_conn = mysqli_connect($this->_DB_HOST, $this->_DB_USER, $this->_DB_PASS);
        if(!$this->_conn) {
           die('A problem has occured');
        }
    }
    public function connect() {
        if(!mysqli_select_db($this->_conn, $this->_DB_NAME)) {
            die("1st time failed<br>");
        }
        return $this->_conn;
    }
}
Class Database
{
    protected $_conn;
    public function __construct() {
        $db = new MySQL;
        $this->_conn = $db->connect();
    }
    public function retrieve() {
        $result = $this->_conn->query("SELECT * FROM mytable");
        return $result;
    }
}
$database = new Database();
$result = $database->retrieve();

你可以简单地使用全局变量

$mysqli = null;
function test($user, $pass, $db, $host){
    // Here you define variable in function to global
    global $mysqli;
    $mysqli = new mysqli($host, $user, $pass, $db);
    if ($mysqli->connect_error) {
        die('Connect Error (' . $mysqli->connect_errno . ') '
            . $mysqli->connect_error);
    }
    else{
        echo 'Checkpoint 1 <br>';
        return $mysqli;
    }
}
test($user, $pass, $db, $host);
$sql = "SELECT * FROM `vive_user` WHERE `username` LIKE"."'$name'";
$result = $mysqli->query($sql);