我刚刚开始一个新的 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/