我的数据库类运行正常,我称之为$db = new Database('user', 'pass', 'db', 'host');
。我在我的脚本之上我定义了这个数据库,但是后来在脚本中我试图在函数内部使用连接,但似乎$db
不是全局的,所以我的函数无法访问它。我可以在我的脚本中的每个函数内创建一个新的数据库类连接,但我真的想访问$db
作为全局访问点。
以下是一些代码:
require_once('database_class.php');
$db = new Database('user', 'pass', 'db', 'host');
// I can reach the $db here and make the $db->PDO->'statement'();
function userExists($user) {
$bool = false;
// But in here I can't access $db...
$query = $db->PDO->query('SELECT * FROM login WHERE username = "$user"');
$result = $query->fetch();
if ($result) {
// User exists
$bool = true;
}
return $bool;
}
答案 0 :(得分:1)
将全局$ db放在函数的开头,如下所示:
function userExists($user) {
global $db;
// Rest of code here
函数中的变量仅在PHP中默认存在于本地。要使用在函数外部声明的未作为参数传递的变量(例如$ user),您需要使用如上所示的全局变量。
答案 1 :(得分:1)
您可能只需修改函数即可将$ db var作为参数。例如:
function userExists($user, $db) {
...
}
默认情况下,对象通过引用传递(请参阅here),这样您就不会在每次调用时无意中复制$ db对象。
答案 2 :(得分:0)
我也使用类进行连接和查询。但是,在您的类中已经定义了连接所需的变量将有所帮助,因此您不必在每个代码页中重复它们。 也许这个?使用db作为参数。
function userExists($ user,$ db){// codecodecode}