让其他函数访问我的数据库连接函数中的$ conn变量
所以在这里,我绝望地试图让事情发挥作用。我知道我试图做的不是OOP也不是100%最佳实践。它不适用于实时网站,我只是在XAMPP上学习一些基本的PHP概念。
我想要做的是是让我的数据库连接函数中的$ conn变量可供所有其他需要它的函数访问。我想把它作为一个参数传递,但是怎么做呢?我不喜欢使用PHP"全球"或$ GLOBALS。我现在的工作方法是使用mysqli使用程序方法。
例如我有这样的事情:
function db () {
$conn = mysqli_connect ("localhost", "root", "", "database");
}
function someFunction () {
$result = mysqli_query ($conn, "SELECT * FROM examples)
}
我从来没有找到我的问题的答案...我最近熟悉的大多数解决方案都是基于OOP或使用有些可疑的方法。
-------------------------------------------- -------------------------------------------------- --------------------------------------
解决方案A - 我宁愿避免在包装器中使用全局变量并保持连接:
global $conn = mysqli_connect ("localhost", "root", "", "database");
global $conn;
function someFunction () {
global $conn;
$result = mysqli_query ($conn, "SELECT * FROM examples)
}
解决方案B - 我还没有为OOP做好准备,但我知道这有效。关键是我想学习不同的东西:
class Database
{
private static $conn;
public static function getObject()
{
if (!self::$conn)
self::$conn = new mysqli("localhost", "root", "", "database");
return self::$conn;
}
}
function someFunction () {
$result = mysqli_query (Database::$conn, "SELECT * FROM examples)
}
解决方案C - 根本不使用功能......只是保持打开状态,从长远来看,我觉得这样做不太实用:
$conn = mysqli_connect ("localhost", "root", "", "database");
$result = mysqli_query ($conn, "SELECT * FROM examples)
-------------------------------------------- -------------------------------------------------- --------------------------------------
我正在努力实现的解决方案:
function db () {
$conn = mysqli_connect ("localhost", "root", "", "database");
return $conn;
}
function someFunction () {
$conn = db ();
$result = mysqli_query ($conn, "SELECT * FROM examples)
}
或类似这样的地方,我只是将连接作为参数或其他东西传递(目前是伪代码)
function db () {
$conn = mysqli_connect ("localhost", "root", "", "database");
}
function someFunction ($conn) {
$result = mysqli_query ($conn, "SELECT * FROM examples)
}
-------------------------------------------- -------------------------------------------------- --------------------------------------
那么我如何实现类似最后两个但实际上有效的东西。这个概念可能吗?
答案 0 :(得分:0)
将参数传递给函数并返回连接
[/Return/ReturnData/Person/Name = Yohanna, /Return/ReturnData/Person[2]/Name = Jacoub]
答案 1 :(得分:0)
简单的答案只是将您的$conn
变量传递给另一个调用函数(而不是建立新的连接)
像
<强> yourpage.php 强>
$conn = new mysqli($servername, $username, $password, $dbname);
someFunction ($conn)//you can add other parameters if you like
function someFunction ($conn) {
$result = mysqli_query ($conn, "SELECT * FROM examples);
}
注意:总是为数据库访问建立新连接并不是一种好的做法。所以总是连接一次并在每个地方使用它。(但如果你的要求不同并且需要多个连接,那么你可以进行多次连接)
答案 2 :(得分:0)
本节中的所有答案都是多余的,因为它们只是通过围绕数据库对象创建包装器而造成开销。 为了分离关注点(可维护性),请使用单独的PHP文件进行数据库连接,并使用require_once。
// Inside Database_Connect.php
$ db = mysqi_connect(本地主机,数据库,密码);
现在在任何需要的mysqli_函数中使用$ GLOBALS ['db']。
或者,将脚本/对象初始化为
$ dbConn = $ GLOBALS ['db'];
并在需要的地方在mysqli_函数内使用$ dbConn。
答案 3 :(得分:-1)
如果您有多个需要数据库访问的php文件,那么您可以选择创建一个带连接代码的文件connection.php
<?php
$conn = mysqli_connect ("localhost", "root", "", "database");
?>
在您需要连接的所有其他文件中使用include_once 'connection.php';
。