在函数中使用现有的数据库连接

时间:2013-10-10 04:14:33

标签: php mysql function pdo

在一个文件中,我连接到数据库(使用PDO),结果连接称为$ db,因此我运行的查询将类似于

$db->query("SELECT money FROM bank_accounts");

但是,如果我将该行放在函数中,则未定义$ db,因此它不起作用。

显然,在每个函数中重新连接到数据库不是在函数中完成db调用的最佳方法,那么我将如何完成类似

的操作
function stealMoney($acctID) {
    $db->query("SELECT money FROM bank_accounts WHERE accountID = $acctID");
}

1 个答案:

答案 0 :(得分:0)

您需要在函数中使用$db

它没有在函数中定义,所以当然,$db对函数体是不可访问/未定义的。

有两种方法可以解决它:

1)将$db作为函数的参数传递。

因此,函数体变为:

function stealMoney($acctID, $db = NULL) {
 $db->query("SELECT money FROM bank_accounts WHERE accountID = $acctID");
}

函数调用:

stealMoney($acctID, $db);

2)使用global: 在这种情况下,您可以将$db用作global

因此,函数体变为:

function stealMoney($acctID) {
 global $db;
 $db->query("SELECT money FROM bank_accounts WHERE accountID = $acctID");

因此,您的函数将从外部读取此变量并可以访问它。