首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP为每个实例存储MySQL连接

问PHP为每个实例存储MySQL连接
EN

Stack Overflow用户
提问于 2016-09-27 09:20:14
回答 2查看 86关注 0票数 0

我面临着一个我不知道如何解决的问题。让我们开始解释:

我有以下课程:

代码语言:javascript
复制
class MyClass{

    function MyClass($mysql_dbcon){
        $this->mysql_dbcon = $mysql_dbcon;
    }

    function execute(){
        include("myscript.php");
    }

}

myscript.php是一个HTML模板,它使用Ajax与其他PHP脚本进行组合。由于这些其他PHP脚本没有直接包含在类中,所以我无法获得变量mysql_dbcon并为每个实例使用不同的连接。让我们猜猜我有以下几个例子:

代码语言:javascript
复制
$i1 = new Myclass($dbcon1);
$i1->execute();

$i2 = new Myclass($dbcon2);
$i2->execute();

两个实例都将执行一个Ajax函数,该函数调用其他处理脚本,但是这些脚本无法访问实例的mysql_dbcon变量,因为它们是独立的脚本执行。

我怎么才能解决这个问题?将MySQL连接存储在$_SESSION中以便所有脚本都可以访问它是正确的吗?也许这是:

代码语言:javascript
复制
$_SESSION['instance_identifier'] = $this->mysql_dbcon;

我想要实现的

我想要创建一个类,开发人员可以在其中设置一个MySQL连接,并且每个实例可以访问不同的数据库,这样每个实例都将显示来自不同数据库的数据。问题是数据的动态加载。

提前感谢

EN

回答 2

Stack Overflow用户

发布于 2016-09-27 09:27:02

你解决不了它。

但是这个脚本无法访问实例的mysql_dbcon变量,因为它是一个独立的脚本执行

一点儿没错。句号。您正在启动一个完全不同的PHP脚本,它与前面的脚本完全没有任何共享。事实上,当浏览器启动AJAX请求时,“现有”MySQL连接将被拆除并关闭,因为整个PHP脚本已经停止。

"myscript.php“只需打开一个新的连接。不能将连接序列化为会话;不能以序列化形式表示数据。这是与其他两个独立的PHP文件完全相同的机制,涉及include和AJAX这一事实并没有改变什么。

还请参见https://stackoverflow.com/a/13840431/476

票数 3
EN

Stack Overflow用户

发布于 2016-09-27 09:48:01

将MySQL连接存储在$_SESSION中以便所有脚本都可以访问它是正确的吗?

不是的。

我正面临着一个问题

你可能不是,或者至少这不是你认为的问题。您可能没有理由尝试在脚本之间“共享”相同的数据库连接,即使可以。如果您提供了更多关于为什么要访问相同连接的上下文,则可以提供进一步的建议。也许有更好的方法来实现你想要的。

也许您试图在不同的地方访问一个查询的结果集,在这种情况下,答案将不是试图共享一个连接,而是可能是传递结果集本身。

关于语法的附加说明

代码语言:javascript
复制
class MyClass {

    function MyClass($mysql_dbcon) {

看起来您正在为构造函数使用过时的PHP 4语法。有关现代标准,请参阅PHP 5中的构造函数上的手动条目。

使用public/protected/private关键字定义类成员的可见性也是很好的做法。请参阅可见性上的手动条目。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39720833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档