php外部连接不上,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_user, $db_password, $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_user, $db_password, $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_user, $db_password, $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,variables,scope,class

来源: https://codeday.me/bug/20190729/1569295.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值