PHP mysqli连接类 – 无法访问外部的连接变量.范围问题

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHP mysqli连接类 – 无法访问外部的连接变量.范围问题脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Call to a member function on a non-object                                     8个
我是新手以OOP方式使用PHP但发现我的数据库连接类有问题.

这里有一个MysqLi连接类的文件

$db_name = 'dbname';
$db_user = 'dbuser';        
$db_password = 'dbpassword';
$db_host = 'localhost';

class database {

    public $MysqLi;

    public function connect($db_host,$db_user,$db_password,$db_name){

        $this->MysqLi = new MysqLi($db_host,$db_name);

        if ($MysqLi->connect_errno) {
            return "Sorry Andre,but you seem to have messed up the DB connection :(";
        }
    }
}

$newConnection = new database;
$newConnection->connect($db_host,$db_name);

然后我想在另一个文件中的数据库连接中使用变量$MysqLi – 这是使用$MysqLi变量连接到数据库简单插入.我将上面的内容包含在连接文件中,但是当我在数据库类中调用方法时,似乎没有返回$MysqLi变量.我得到PHP错误说…

Fatal error: Call to a member function PRepare() on a non-object in...

我见过那个用

global $MysqLi;

然而,我想以正确的方式去做,因为我听说这不是好的做法.

知道我可能在这里做错了,因为我不熟悉使用OOP但是我假设通过在connect函数中返回该变量,我可以通过在外部创建类来访问它.

感谢帮助,
谢谢.

解决方法

在外面使用它时,您可以通过实例访问类变量

$newConnection = new database;
$newConnection->connect($db_host,$db_name);
$newConnection->MysqLi /* here you have access From outside */

从里面你使用关键字$this …

// like this from inside
if ($this->MysqLi->connect_errno) {
    return "Sorry Andre,but you seem to have messed up the DB connection :(";
}

如果您想保护您的变量不受外部访问使用:

private $MysqLi; 
  // instead of 
  public $MysqLi;

脚本宝典总结

以上是脚本宝典为你收集整理的PHP mysqli连接类 – 无法访问外部的连接变量.范围问题全部内容,希望文章能够帮你解决PHP mysqli连接类 – 无法访问外部的连接变量.范围问题所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。