在非对象上调用成员函数 real_escape_string() [英] Call to a member function real_escape_string() on a non-object
本文介绍了在非对象上调用成员函数 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屋!
查看全文