从函数返回MySQLi对象

时间:2012-07-21 14:42:06

标签: php mysqli

我在global.php文件中声明了以下函数:

function dbconnect(){
   $mysqli = new mysqli($dbserver,$dbuser,$dbpasswd,$dbdatabase);
   if ($mysqli->connect_error){
      echo ($mysqli->connect_error);
      return null;
   } else {
      return $mysqli;
   }
}

我已100%确定$ dbdatabase是一个有效的数据库。我调用函数我得到一个有效的对象,没有错误;但是,当我尝试执行查询时,该对象报告未选择任何数据库。如果我删除代码并直接在我需要的地方执行它 - 没有问题。我错过了什么吗?谢谢!

2 个答案:

答案 0 :(得分:1)

$dbserver $dbuser $dbpasswd$dbdatabase未在函数范围内定义。

您应该通过以下参数传递它们:

function dbconnect($dbserver, $dbuser, $dbpasswd, $dbdatabase){

或者你可以使用糟糕的编码方法并通过这样做来全局化变量:

function dbconnect(){
    global $dbserver, $dbuser, $dbpasswd, $dbdatabase;

我建议使用第一种方法,或者只是在函数中定义变量。

答案 1 :(得分:0)

实际上还有另一种方式。你不需要让所有这些全局化。而不是你可以在本地制作它们。

像...

function dbConnect(){

$server = "localhost";
$username = "root";
$password = "";
$dbname = "test";

 $con = new mysqli($server,$username,$password,$dbname);
 return $con ;

}