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 "
我很困惑。
您需要在函数中使用 global
关键字:
function unlinkDb() {
global $link;
mysqli_close($link);
}
然后按如下方式使用它:
$link = linkDb();
unlinkDb();
虽然更好的解决方案是不使用 global
关键字并将$link
作为参数传递给linkDb()
:
$link = linkDb();
unlinkDb($link);
使用函数反抗,如下所示:
function linkDb(&$link) {...}
function unlinkDb(&$link) {...}
连接保留在类中(我假设我正在查看一个类),则可以将其定义为变量并从实例化对象内部引用它;这样,您可以通过调用 $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);
}
我对代码进行了修改并将其更改为以下内容:
function linkDb()
{
$link = '';
..............
}
function unlinkDb($link) {
mysqli_close($link);
}
在另一个文件中,我正在打开连接,我这样做了:
$link = linkDb();
并在同一文件中调用函数以这种方式关闭数据库:
unlinkDb($link);
现在它以我需要的方式工作。我要感谢在座的所有人,他们试图帮助我。