我遇到了一个我不知道如何解决的问题。让我们开始解释:
我有以下类(class):
class MyClass{
function MyClass($mysql_dbcon){
$this->mysql_dbcon = $mysql_dbcon;
}
function execute(){
include("myscript.php");
}
}
myscript.php 是一个 HTML 模板,它使用 Ajax 与其他 PHP 脚本 进行通信。由于这些其他 PHP 脚本未直接包含在类中,因此我无法获取变量 mysql_dbcon
并为每个实例使用不同的连接。假设我有以下实例:
$i1 = new Myclass($dbcon1);
$i1->execute();
$i2 = new Myclass($dbcon2);
$i2->execute();
两个实例都将执行调用其他处理脚本的 Ajax 函数,但这些脚本无法访问实例的 mysql_dbcon 变量,因为它们是独立的脚本执行。
我该如何解决这个问题?将 MySQL 连接存储在 $_SESSION
中以便所有脚本都可以访问它是否正确?也许是这样的:
$_SESSION['instance_identifier'] = $this->mysql_dbcon;
我想要实现的目标
我想创建一个类,开发人员可以在其中设置 MySQL 连接,并且每个实例都可以访问不同的数据库,因此每个实例都将显示来自不同数据库的数据。问题在于该数据的动态加载。
提前致谢
最佳答案
你无法解决它。
but this script can't access the instance's mysql_dbcon variable due to it's an independent script execution
没错。时期。您正在启动一个完全不同的 PHP 脚本,它与之前的脚本完全没有任何共享。事实上,当浏览器发起 AJAX 请求时,“现有的”MySQL 连接已经断开并关闭,因为整个 PHP 脚本已经停止。
“myscript.php”只需打开一个新连接。您不能将连接序列化为 session ;它不是可以以序列化形式表示的数据。这与任何其他两个独立的 PHP 文件完全相同的机制,涉及 include
和 AJAX 的事实没有任何改变。
关于PHP 类 - 为每个实例存储 MySQL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39720833/