Php 对非对象调用成员函数prepare(),即使在声明全局函数之后

Php 对非对象调用成员函数prepare(),即使在声明全局函数之后,php,pdo,connection,Php,Pdo,Connection,我的文件中有12个函数,在非对象上调用成员函数prepare()时出现错误 这就是问题出现的原因 <?php function getUsers() {//returns an array of users global $db; $list = array(); $stmt = $db->prepare('SELECT username FROM user_info'); $users = $stmt->fetch(PDO::FETC

我的文件中有12个函数,在非对象上调用成员函数prepare()时出现错误

这就是问题出现的原因

    <?php

function getUsers() {//returns an array of users
    global $db;
    $list = array();
    $stmt = $db->prepare('SELECT username FROM user_info');
    $users = $stmt->fetch(PDO::FETCH_ASSOC);
    if (is_array($users) || is_object($users))
{
    foreach ($users as $user)    {
        array_push($list, $user[0]);
    }return $list;
}
}


    $users = getUsers();
function getImageURL($user) {
    $stmt = $db->prepare('SELECT propic FROM user_info WHERE username=:username');
    $stmt->execute(array(':username' => $user));
    $source = $stmt->fetch(PDO::FETCH_ASSOC);
    return $source;
}
终于解决了

function getUsers() {//returns an array of users
    global $db;
    $list = array();
    $stmt = $db->prepare('SELECT username FROM user_info');
    $users = $stmt->fetch(PDO::FETCH_ASSOC);
    if (is_array($users) || is_object($users)) {
        foreach ($users as $user) {
            array_push($list, $user[0]);
        }return $list;
    }
}

$users = getUsers();

function getImageURL($user) {
    global $db;
    $stmt = $db->prepare('SELECT propic FROM user_info WHERE username=:username');
    $stmt->execute(array(':username' => $user));
    $source = $stmt->fetch(PDO::FETCH_ASSOC);
    return $source;
}

只需确保
$db
是一个PDO实例,最好只在函数参数中注入db实例,而不是已经注入
$user=new user($db)在构造函数中?也许您应该使用
$this->db
User
中的某种属性在
->getUser()
方法中使用,而不是使用
global$db
。我们只能猜测类
User
anyways@Ghost那么解决方案是什么呢?错误消息应该包含文件名和lne编号。这是否指向您发布的代码?
function getUsers()
与您发布的其他代码有何关联?@VolkerK yes
致命错误:在第6行的C:\Users\sanoj\Documents\NetBeansProjects\PDO friends 2\userData.php中对非对象调用成员函数prepare()
function getUsers() {//returns an array of users
    global $db;
    $list = array();
    $stmt = $db->prepare('SELECT username FROM user_info');
    $users = $stmt->fetch(PDO::FETCH_ASSOC);
    if (is_array($users) || is_object($users)) {
        foreach ($users as $user) {
            array_push($list, $user[0]);
        }return $list;
    }
}

$users = getUsers();

function getImageURL($user) {
    global $db;
    $stmt = $db->prepare('SELECT propic FROM user_info WHERE username=:username');
    $stmt->execute(array(':username' => $user));
    $source = $stmt->fetch(PDO::FETCH_ASSOC);
    return $source;
}