gpt4 book ai didi

php - 如何让 mysqli 实例在函数中被识别?

转载 作者:行者123 更新时间:2023-11-29 12:43:05 24 4
gpt4 key购买 nike

我正在从 mysql 升级到 mysqli。

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

我遇到的问题是,对于 mysql,一旦我建立了连接,我就不必将该连接作为参数注入(inject)到任何函数中,以便 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 注入(inject)到函数中:

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 作为参数注入(inject)其中,或者是否有一种方法可以像 mysql 那样无需注入(inject)即可访问它?

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

最佳答案

将变量设为全局是不好的做法。单例模式解决了在整个应用程序生命周期中需要共享一个对象实例的问题。考虑使用单例。

关于php - 如何让 mysqli 实例在函数中被识别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25844557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com