在非对象上调用成员函数 real_escape_string() [英] Call to a member function real_escape_string() on a non-object

查看:35
本文介绍了在非对象上调用成员函数 real_escape_string()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我收到此错误:

调用成员函数real_escape_string() 在非对象上

Call to a member function real_escape_string() on a non-object

这里是 $db

$db = new mysqli("127.0.0.1", "用户名", "密码", "sch5400");

$db = new mysqli("127.0.0.1", "username", "password", "sch5400");

在代码中:

function readSession($sessionId) {
    global $db;
    $sessionId = session_id();
    // escape session ID
    $sessionId = $db->real_escape_string($sessionId);
    $time = time();
    $result = $db->query("SELECT sessiondata FROM sessions WHERE sessionid='$sessionId' AND expiry > $time");
    if ($result->num_rows > 0) {
        $row = $result->fetchRow();
        return $row['sessiondata'];
    }
    // return empty string
    return "";
    }

它出现在第 5 行,相对于上面的代码.我不是实例化了 $db 吗?

It appears on line 5, relative to code above. Didn't I instantiate $db?

推荐答案

可能更好的解决方案是创建一个单例函数:

Probably the better solution would be to create a singleton function:

function get_my_db()
{
    static $db;

    if (!$db) {
        $db = new mysqli("127.0.0.1", "username", "password", "sch5400");
    }

    return $db;
}

并像使用它一样

$db = get_my_db();

在每个需要数据库实例的函数中.

in every function that needs db instance.

这篇关于在非对象上调用成员函数 real_escape_string()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆