未定义的变量和函数prepare()为null

时间:2017-03-13 20:13:03

标签: php pdo

我正在尝试创建一个页面,它将输出我的数据库的用户名。在这样做时,我有两个错误说“未定义变量: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上显示错误。

如果找到解决方案,我将非常感激!

1 个答案:

答案 0 :(得分:0)

你有一个可变范围问题,

要解决此问题,您可以将$conn变量作为参数传递给函数声明步骤中的函数,如下所示:

function getUser($conn, $id, $field) {

然后当你打算调用你的函数时,按如下方式传递连接变量:

$usernames = getUser($conn, $user_id, 'username');