Php 在多个函数(OO)上使用MySQLi连接
从mysql切换到mysqli,我先创建一个连接,然后在几个函数中使用它,并在脚本结束时关闭它(我不是专家:) 然而,我注意到现在,这在mysqli中已经不可能了。我有:Php 在多个函数(OO)上使用MySQLi连接,php,mysql,mysqli,Php,Mysql,Mysqli,从mysql切换到mysqli,我先创建一个连接,然后在几个函数中使用它,并在脚本结束时关闭它(我不是专家:) 然而,我注意到现在,这在mysqli中已经不可能了。我有: $db = new mysqli('localhost', 'username', 'password', 'database'); if($db->connect_errno > 0){ die('Unable to connect to database [' . $db->connect_err
$db = new mysqli('localhost', 'username', 'password', 'database');
if($db->connect_errno > 0){
die('Unable to connect to database [' . $db->connect_error . ']');
}
$db->set_charset("utf8");
然后,需要使用该连接的几个函数
function x(){
$db->query(....);
}
我在执行此操作时出错,因为$db不是函数中的对象
我做了一点调查并添加了
global $db;
在调用内部查询之前,每个函数都解决了这个问题。但是考虑到我有数百个函数,我是否需要在每个函数的开头添加它们?难道没有其他方法可以将该连接设置为对所有函数公开可用吗
我发现mysqli比mysql复杂一点,也许我只是习惯了,但即使使用过程,你也需要传递mysql不需要的额外参数,或者我遗漏了什么?你应该阅读依赖注入。使用全局语句是非常糟糕的编码实践。这并不能使您免于修改函数,但它将为您提供一个更加不脆弱的代码库,我同意@MikeBrant。基本上,这是你的解决方案<代码>函数x(mysqli$db){$db->query(…);}所以基本上我要么将连接对象作为参数传递给函数,要么创建一个类来查询数据库,并在每次需要查询时调用它,对吗?