gpt4 book ai didi

php - 使用多个 php 函数查询单个(mysql)数据库的正确方法

转载 作者:行者123 更新时间:2023-11-30 23:45:07 25 4
gpt4 key购买 nike

在 PHP 网站上工作时,我遇到了一个我自己无法解决的效率问题。

我有几个单独的 php 文件:

  • connection.php - 连接到数据库。
  • sqlFunctions.php - 执行不同 sql (mysqli) 查询、操作数据并返回数据的几个函数。
  • index.php - 执行 sqlFunctions.php 中的一些函数并使用返回值在页面中显示某些内容的文件。

connection.php:

$servername = "DATA"; //Replaced to "DATA" for posting on stackoverflow
$username = "DATA";
$password = "DATA";
$dbname = "DATA";

$con = new mysqli($servername, $username, $password, $dbname);

if ($con->connect_error) {
die("Connection failed: " . $con->connect_error);
}

sqlFunctions.php:

<?php
function query1(){
require('connection.php');
//PDO Query to DB, fetch, store, modify data etc.
mysqli_close($con);
//Return modified data
}
function query2(){
require('connection.php');
//PDO Query to DB, fetch, store, modify some other data etc.
mysqli_close($con);
//Return modified data
}
?>

index.php:

//Simplified version
require('sqlFunctions.php');
<?php echo query1();?>

所以我在想 - 在每次函数调用时都启动到数据库的新连接不是一个好主意。如果我要在 sqlFunctions.php 中的函数中启动与数据库的连接 - 我需要将另一个变量/引用/指针(你知道我的意思)传递给该文件中的每个函数这是我不想做的事情。

那么什么是完成我需要的最佳方法?

长话短说;博士;:

  • 主文件调用单独文件中的函数
  • 该函数执行 sql 查询并返回数据
  • 显示返回的数据
  • 无需在每次函数调用时重新打开/关闭数据库连接。

最佳答案

有几个选项。

选项 1. 在每个函数中声明您的数据库连接是全局的。

sqlFunctions.php:

<?php

require('connection.php');

function query1(){
global $con;
// mysqli code with $con
}
function query2(){
global $con;
// mysqli code with $con
}
?>

选项 2. 使用 GLOBALS。

连接.php:

...

$GLOBALS['con'] = new mysqli($servername, $username, $password, $dbname);

...

sqlFunctions.php:

<?php

require('connection.php');

function query1(){
// mysqli code with $GLOBALS['con']
}
function query2(){
// mysqli code with $GLOBALS['con']
}
?>

选项 3. 将所有函数包装到一个类中(注意大写 S)。

SqlFunctions.php:

class SqlFunctions {
protected $con;

public function __construct() {
global $con;
// can also pass $con as parameter or init db here
$this->con = $con;
}

public function query1(){
// mysqli code with $this->con
}

public function query2(){
// mysqli code with $this->con
}
}

索引.php:

require('SqlFunctions.php');
$sqlFunctions = new SqlFunctions();

<?php echo $sqlFunctions->query1();?>

在这种情况下,您还可以在类内部初始化连接或将其作为参数传递给 __construct()。

关于php - 使用多个 php 函数查询单个(mysql)数据库的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42380038/

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