>我有一个连接到数据库的函数。调用该函数后,我希望它返回数据库/连接对象,以便我能够使用该对象并对数据库执行查询。如何从函数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);