将 $mysqli 设置为 OOP 的全局变量

2024-01-08

好的, 这是一个复杂的问题,但任何帮助或建议将非常感激。

所以我正在与一个网站合作(使用.htaccess)将所有流量重定向到load.php。对于任何sql功能,我有一个抽象类,它有很多查询语句作为传递参数来定义每个查询的细节的函数。

例如 $table->update("约束")

我正在尝试弄清楚如何设置与数据库的连接load.php,然后将连接设置为变量($mysqli)然后可以在我的抽象查询类中引用它,而不必将参数传递给每个查询函数调用。

再次强调,任何帮助或建议将不胜感激。

这是一个函数的示例:

 function clearTable (){
    $mysqli = dbConnect::connect();
    $sql = "TRUNCATE TABLE $this->tablename";
    $mysqli->query($sql);

}

如果我在构造函数中连接到数据库并设置$this->mysqli并替换$mysqli = dbConnect::connect(); with $mysqli = $this->mysqli,所有查询都不起作用。尽管他们每次通话时都会重新连接。


您应该为此使用依赖注入。

基本上,这意味着需要数据库连接的类不会创建连接,它只是接收已经实例化的实例。

Example

在一些初始化文件中:

// Create the db connection
$db = new Mysqli(......);

// Pass it to the query class that needs it
$queryClass = new QueryClass($db);

然后在你的类文件中:

class QueryClass
{
    protected $db;

    public function __construct($db)
    {
        // $this->db will now be the same Mysql instance
        $this->db = $db;
    }

    public function doSomeQuery()
    {
        $this->db->query(....);
    }
}

这样做的好处是,如果您想开始进行一些单元测试,则无需接触 QueryClass。您只需将数据库连接传递到测试数据库即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 $mysqli 设置为 OOP 的全局变量 的相关文章

随机推荐

  • 使用 SSMS 2016 时出错:对象无法从 DBNull 转换为其他类型

    任何人都可以解决这个问题 Windows 10 笔记本电脑上的 SQL Server Management Studio 2016 CTP3 13 0 900 73 对象资源管理器 gt 服务器 gt 数据库 gt 数据库 右键单击 属性
  • 无法将图像推送到 Amazon ECR - 失败并显示“没有基本身份验证凭据”

    我正在尝试将 docker 映像推送到 Amazon ECR 注册表 我正在使用 docker 客户端 Docker 版本 1 9 1 构建a34a1d5 I use aws ecr get login region us east 1获取
  • ipython 安装新模块

    我已经习惯了安装软件包的 R 功能 并且我正在尝试使用 R 来做同样的事情ipython 有时以下方法有效 但有时又无效 我想最终找出为什么它只有效一半的时间 通常要安装一个模块 比如requests例如 我会在打开新终端后输入以下内容 s
  • UICollectionView 不会在 RTL 中从右到左填充数据

    我有一个UICollectionView并想要水平显示单元格 例如 用英语 它应该显示 细胞A 细胞B 细胞C 阿拉伯语 它应该显示 细胞C 细胞B 细胞A 对于 RTL UICollectionViewFlowLayout如果每个单元格大
  • PO 文件本地化未按数据注释的预期工作

    我在我的 asp net core 应用程序中使用了 Orchard Localization 启动 cs services AddPortableObjectLocalization options gt options Resource
  • 谷歌应用程序脚本是同步的吗?

    我是一名 Java 开发人员 同时学习 JavaScript 和 Google Apps 脚本 作为新手 我学习了 JavaScript 的语法 而不是它实际上是如何工作的 我很高兴地使用 Google Apps 脚本并按顺序和同步编写代码
  • Ember.JS 中的动态计算属性已弃用?

    我正在尝试制作一个 ember 应用程序 我有一个计算属性 控制器如下所示 The Controller Todos Controller Ember Controller create SNIP countCompleted functi
  • “eval() uating”条件的替代方法

    在我正在处理的遗留代码库中 有一个条件评估器 它接受用户输入来构建条件 然后使用 php eval 在运行时评估此条件 在不使用 eval 的情况下解决此问题的最佳方法是什么 例如我有一个用户在 UI 中输入的条件 1 gt 0 必须对此进
  • 使用 VBA 从 Excel 工作表更新 SQL

    我正在尝试使用 VBA 从 Excel 工作表更新 SQL 中的一些记录 我在 Excel 工作表中有很多记录 所以这就是为什么我想自动化这一点 以下是我要更新 rmn dr 的字段示例 t id 在两个表中都是唯一的 我想使用 Excel
  • ADB 没有响应 - Android Studio

    不要将其标记为重复项 让我解释一下出了什么问题并告诉你我做了什么 所以这是我的问题 当我打开 Android Studio 时 它给我一个错误 如下所示 然后我进入我的 Windows 防火墙设置 这是我所拥有的 如您所见 防火墙已关闭 然
  • 工作节点组未加入 EKS 集群

    我按照这个博客在 AWS 上设置了 open5GS https aws amazon com blogs opensource open source mobile core network implementation on amazon
  • 为什么 simplexml_load_file 相对于主机文件不起作用?

    I have simplexml load file指令放置在包含的 PHP 文件中 但该指令的工作原理取决于我包含此文件的位置 为什么 是否可以相对于放置的文件指令解释相对文件路径 您始终可以使用魔法访问当前文件的完整路径 FILE ht
  • partial_fit Sklearn 的 MLPClassifier

    我一直在尝试使用Sklearn的神经网络MLPClassifier 我有一个大小为 1000 个实例的数据集 具有二进制输出 我想对其应用带有 1 个隐藏层的基本神经网络 问题是我的数据实例并非同时可用 在任何时间点 我只能访问 1 个数据
  • Erlang 进程与 Java 线程

    我在读Sa a Juri 所著的 Elixir in Action 一书 第一章 https manning content s3 amazonaws com download b b915834 e80b 4520 939d ff1900
  • Delphi 中的嵌套属性

    Delphi 有没有办法使用嵌套属性 目前我正在使用Delphi XE 例如 TCompoundAttribute class TCustomAttribute public constructor Create A1 A2 TCustom
  • 有没有办法在函数运行完成后运行其他函数?

    def foo pass def bar print good bay 两个功能如打击 现在我想在 foo run 完成后运行 bar 函数 有没有类似类使用的方法 del 据我所知 在课堂方法中我可以使用 del 就像下面这样 class
  • 在表中存储/检索数组的最佳方法

    我目前在 MySQL 中有一个表可以正常存储值 但我想向该表添加一个字段来存储值数组 例如城市 我应该简单地将该数组存储为 CSV 吗 每行都需要它自己的数组 因此我对创建一个新表并为前一个表中插入的每行插入 2 5 行感到不安 我觉得这种
  • 如何在 JavaFX TableView 中的行悬停时发生某些事情?

    现在 当在表格视图中选择一行时 我会在鼠标位置显示对话框 我希望当我将鼠标悬停在每一行上时显示对话框 似乎有一个 CSS hover 所以我认为它可以以某种方式在 java 代码中捕获 您可以创建一个自定义表行工厂 它将侦听器添加到行的悬停
  • 为什么我不能在 std::vector 中使用抽象类?

    我是从这些问题中得出的 为什么我们不能声明 std vector https stackoverflow com questions 2160920 why cant we declare a stdvectorabstractclass
  • 将 $mysqli 设置为 OOP 的全局变量

    好的 这是一个复杂的问题 但任何帮助或建议将非常感激 所以我正在与一个网站合作 使用 htaccess 将所有流量重定向到load php 对于任何sql功能 我有一个抽象类 它有很多查询语句作为传递参数来定义每个查询的细节的函数 例如 t