微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐