2015-12-15 39 views
1

我从第二个PHP文件调用一个函数,我想避免再次创建数据库连接。我正在使用此代码,但它不起作用。将SQL数据库连接传递给PHP函数

$Db = mysqli_init(); 
$Db->options(MYSQLI_OPT_LOCAL_INFILE, true); 
$Db->real_connect($servername, $username, $password, $dbname, 3306); 
$connection = $Db->real_connect($servername, $username, $password, $dbname, 3306); 

CheckTableMetrics($connection, $dbname, $table1, $table2, $metric1, $metric2, $date1, $date2, $start_date, $end_date); 

我出错了。如果我把我的代码的第一部分放在包含函数一切正常的PHP文件中。

的错误,我得到:一个无效的对象或资源的mysqli

调用一个成员函数FETCH_ASSOC():

的mysqli ::查询()非对象

该代码工作正常,如果我j乌斯特把:

$Db = mysqli_init(); 
$Db->options(MYSQLI_OPT_LOCAL_INFILE, true); 
$Db->real_connect($servername, $username, $password, $dbname, 3306); 

这是最好的办法吗?

+2

不工作..我**喜欢**这样的问题。我们怎么神奇地应该知道为什么它不起作用?打开错误报告并尝试调试您的代码? – Naruto

+2

什么是'它不工作'? –

+0

尝试使用http://php.net/manual/en/class.pdo.php –

回答

4

你的问题很简单:

$connection = $Db->real_connect($servername, $username, $password, $dbname, 3306); 

这是不对的。 real_connect()返回布尔标记成功或失败,而不是连接的数据库对象。相反,你应该发送$Db到你的功能,它会一切工作。

+1

好斑 - 完全错过了 – Steve

+0

好。非常简单! –

+1

简单的问题往往最难找到:) – TwoStraws