我有一个来自PHP4的项目,我正在转向PHP5环境。它是由其他开发人员长时间开发的。在此开发人员使用DB类创建了一个简单的数据库连接,
$conn = new db(HOST,USER,PASS,DATABASE);
之后创建一个函数,并在此函数中将连接变量声明为全局
function on_session_write($key, $val)
{
global $conn;
error_log("$key = $value");
$val = addslashes($val);
$query = "INSERT INTO tblSessions VALUES('$key','$val',UNIX_TIMESTAMP(date_add(now(), INTERVAL 1 HOUR)),now())";
$result = $conn->db_query($query);
$error = $conn->db_get_error_msg();
}
我收到错误 致命错误:在非对象上调用成员函数db_query()...
为什么变量范围有限且在函数内部不可用?我们可以做什么,以便它可以在函数内部使用...
它与某些PHP5设置有关吗?
我们考虑采用以下解决方案,
1)如果我们决定将连接变量传递给函数,那么我们需要在很多地方进行更新,因为它已在很多地方使用过。
2)使用$ GLOBALS也没有任何区别。连接变量在$ GLOBALS中添加,但是当我们在函数内部执行var_dump时它是空的。在函数外部,它在$ GLOBALS
中显示连接变量