Php 如何在函数中识别mysqli实例?

Php 如何在函数中识别mysqli实例?,php,mysql,mysqli,Php,Mysql,Mysqli,我正在从mysql升级到mysqli 我所有的mysql代码都是过程性的,现在我想转换成OOP,因为大多数在线mysqli示例都是OOP 我遇到的问题是,对于mysql,一旦我建立了连接,我就不必将该连接作为mysql在函数中可访问的参数注入任何函数 这是我的旧连接代码: $location = "localhost"; $user = "rogerRamjet"; $pass = "bestPassInTheWorld"; $db

我正在从mysql升级到mysqli

我所有的mysql代码都是过程性的,现在我想转换成OOP,因为大多数在线mysqli示例都是OOP

我遇到的问题是,对于mysql,一旦我建立了连接,我就不必将该连接作为mysql在函数中可访问的参数注入任何函数

这是我的旧连接代码:

$location = "localhost";
$user = "rogerRamjet"; 
$pass = "bestPassInTheWorld"; 
$dbName = "myDBName";

$link = mysql_connect($location, $user, $pass);
if (!$link) {
    die("Could not connect to the database.");
}

mysql_select_db("$dbName") or die ("no database");
还有一个示例函数,可以访问mysql连接,不需要向函数中注入$link:

function getUser($data)
{
    $data=mysql_real_escape_string($data);
    $error = array('status'=>false,'userID'=>-1);   
    $query = "SELECT `user_id`, `user_email` FROM `myTable` WHERE `data`='$data'";  
    if ($result = mysql_query($query))  
    {             
        $row = mysql_fetch_array($result, MYSQL_ASSOC); 
        if ($row['user_id']!="")
        {
            return array( 'status'=>true, 'userID'=>$row['user_id'], 'email'=>$row['user_email'] );
        }
        else return $error;           
    }
    else return $error; 
}
这是我的新mysqli连接:

$mysqli=new MySQLi($location, $user, $pass, $dbName);
因此,要升级上述函数的第一行,我需要:

$data = $mysqli->real_escape_string($data);
但这就产生了一个错误:

Undefined variable: mysqli
这是否意味着对于任何需要访问$mysqli的函数,我需要将$mysqli作为参数注入其中,或者是否有一种方法可以像不注入mysql那样访问它


我知道我需要转向准备好的语句,但这只是为了让我了解mysqli的基础知识。

粗略的解决方案是
global$mysqli作为函数的第一行。但正如hsan所写的,阅读PHP变量作用域,将变量设置为全局是不好的做法。singleton模式解决了在整个应用程序生命周期中需要共享一个对象实例的问题。考虑使用一个Stutelon。< /P>查看PHP.NET的文章。虽然Global 会有所帮助,但不建议使用它,因为它需要变量存在,如果它不存在,应用程序将无法工作。我会建立一个类来建立一个连接,完成它的工作并断开连接。谢谢大家。为什么mysql永远不需要注入,或者设置为全局的呢?更进一步,除了建立mysql连接之外,无需做任何事情就可以访问它。怎么做?从不同的角度来看,使用单例是相同的全局状态