我正在尝试创建一个页面,它将输出我的数据库的用户名。在这样做时,我有两个错误说“未定义变量:conn in functions.php”和“调用函数.php中的null成员函数prepare()”
functions.php - 第6行是错误
<?php
require 'database.php';
function getUser($id, $field) {
$query = $conn->prepare("SELECT $field FROM users WHERE id='$id'"); //error line
$query->bind_param($id, $field);
$query->execute();
$run = $query->fetch(PDO::FETCH_ASSOC);
return $run[$field];
}
?>
database.php中
<?php
// 3 variables below removed
$dsn = '';
$username = '';
$password = '';
try {
$conn = new PDO($dsn, $username, $password);
} catch(PDOException $e) {
die("Connection denied: " . $e->getMessage());
}
?>
members.php
<?php
require 'functions.php';
require 'database.php';
$stmt = $conn->prepare('SELECT id FROM users');
$stmt->execute();
while($run_mem = $stmt->fetch(PDO::FETCH_ASSOC)) {
$user_id = $run_mem['id'];
$usernames = getUser($user_id, 'username');
echo $usernames;
}
?>
即使我使用相同的变量 $ conn ,也没有在prepare()语句的members.php上显示错误。
如果找到解决方案,我将非常感激!
答案 0 :(得分:0)
你有一个可变范围问题,
要解决此问题,您可以将$conn
变量作为参数传递给函数声明步骤中的函数,如下所示:
function getUser($conn, $id, $field) {
然后当你打算调用你的函数时,按如下方式传递连接变量:
$usernames = getUser($conn, $user_id, 'username');