PHP 更改为 mysqli。 mysqli_connection 不是全局的吗?

标签 php mysql function mysqli

我刚刚开始一个新的 PHP 项目,我认为是时候遵循 php 的建议并停止使用 mysql 并转而使用 mysqli 了。但这给了我一个问题。

通常我的设置是这样的

Index.php 文件,在这个文件中我有 2 个 require 语句。一个调用 db.php 文件,另一个调用 functions.php 文件。到目前为止一切顺利。

在 functions.php 文件中,有许多不同的函数在整个主页上使用,其中许多都使用 SQL。 使用 php 旧的 mysql API,这没问题,但它接缝新的 mysqli api 不允许从包含的文件使用连接???

例如,在我的 db.php 中有连接语句。 $db = mysql_connect(*******); 在我的 function.php 中,我有 mysql_query(******),它运行完美。

但是如果我将 db.php 更改为 $db = mysqli_connect(*****); 然后在我的 function.php 文件中我不能调用 mysqli_query(***)。 (我也测试过面向对象,但它给了我同样的问题)。

那么如何解决这个问题呢? php 是否希望我将 mysqli_connect 语句放在每个 使用 sql 语句的文件的开头?

最佳答案

是的,MySQLi 是面向对象的,您需要将 $db 对象传递给需要数据库连接的函数。过程替代方案还需要 $db 对象才能工作。这是为了您好,因为隐式全局连接(实际上:任何形式的全局状态)都是不好的做法。 mysql 扩展允许隐式连接从一开始就不好。

关于PHP 更改为 mysqli。 mysqli_connection 不是全局的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12111122/

相关文章:

javascript - .ajax jquery 方法的正确使用?

php - mysql 只返回 2 个结果

Javascript Navigator.geolocation

r - 如何从 R 中的自定义函数向数据框添加多列

javascript - 如何在 javascript 中从 PHP 调用函数,Ajax 不返回任何内容

php - 如何使用 PDO 通过变量从动态列中进行选择?

MySQL 能源系统建模数据库 EAV 设计

php - 如何使用特殊排序/mysql-php 连接表

php - 如何按空格拆分字符串以及 php 中的双引号

java - 为什么这个函数不能像它应该的那样向 ArrayList 添加项目?