我试图将代码从mysql转换为mysqli.该代码在一个文件中使用单个mysql_connect,该文件包含在每个其他文件中.
mysql_connect返回一个超级全局的MySQL链接标识符,因此您可以依赖于任何自己的函数中的数据库连接.
看起来像mysqli_connect不是这种情况,返回的对象不是全局的.
这是否意味着我必须添加:global $ mysqli; 在每个功能的顶部,还是有办法使它成为超全球?
如果你没有指定,那么依赖PHP将使用最后打开的连接资源的事实可能不是一个好主意.
如果您的应用程序发生更改并且您需要两个连接,或者连接不存在,会发生什么?
因此,无论如何,您似乎需要进行一些重构.
这是一个类似于Karsten的解决方案,它总是返回相同的mysqli对象.
class DB {
private static $mysqli;
private function __construct(){} //no instantiation
static function cxn() {
if( !self::$mysqli ) {
self::$mysqli = new mysqli(...);
}
return self::$mysqli;
}
}
//use
DB::cxn()->prepare(....
Run Code Online (Sandbox Code Playgroud)