global $link;
function linkDb() {
$hostname = 'xxxxx';
$username = 'xxxxxx';
$password = 'xxxxxx';
$database = 'xxxxxx';
$link = mysqli_connect($hostname, $username, $password);
if (!$link) {
echo ('Error: Could not make a database link using provided credentials');
die();
}
if (!mysqli_select_db($link, $database)) {
echo ('Error: Could not connect to database');
die();
}
return $link;
}
function unlinkDb() {
mysqli_close($link);
}
上面的代码文件包含在第二个文件的顶部,我正在尝试关闭数据库连接,
unlinkDb();
但是它的说法
"ERROR: Undefined variable: link "
我很困惑。
答案 0 :(得分:0)
您需要使用功能中的global
关键字:
function unlinkDb() {
global $link;
mysqli_close($link);
}
然后使用它:
$link = linkDb();
unlinkDb();
虽然更好的解决方案是不使用global
关键字并将$link
作为参数传递给linkDb()
:
$link = linkDb();
unlinkDb($link);
答案 1 :(得分:0)
使用函数定义:
function linkDb(&$link) {...}
function unlinkDb(&$link) {...}
答案 2 :(得分:0)
如果你喜欢在你的类中保持连接(我假设我在看一个类)你可以将它定义为一个变量并从实例化对象中引用它; 这样,您可以通过调用$ this-> linkDb();从对象内的任何位置关闭/打开连接。和/或$ this-> unlinkDb();
class DBClass {
private $link;
function linkDb(){
$this->link = mysqli_connect($hostname, $username, $password);
}
function unlinkDb() {
mysqli_close($this->link);
}
}
你也可以通过函数本身传递它(如前所述),假设你不在课堂上工作:
function linkDb(){
$link = mysqli_connect($hostname, $username, $password);
// Do fancy stuff
unlinkDb($link);
}
function unlinkDb($link){
mysqli_close($link);
}
答案 3 :(得分:0)
我对代码进行了修改并将其更改为以下内容:
function linkDb()
{
$link = '';
..............
}
function unlinkDb($link) {
mysqli_close($link);
}
在另一个文件中,我打开了一个连接,我做了这个:
$link = linkDb();
并在同一个文件中调用一个以这种方式关闭DB的函数:
unlinkDb($link);
现在它的工作方式,我需要的。我要感谢所有试图帮助我的人。