首页 > 解决方案 > 如何在不修改它们的情况下获取所有 CRUD Mysql 查询的 ID?

问题描述

假设我们有一个大型遗留 PHP 项目,它使用直接 SQL 查询到一个名为 MysqlCls 的类。每个 http 请求都被路由到一个专用控制器。然后,该控制器将要求专用模型类对数据库执行 CRUD 操作。有几百个模型类,其中包含数千个 SQL 语句字符串,因此我无法更改实际的 SQL。MysqlCls 类扩展了 Mysqli 并具有接收 SQL 字符串并以数组或 Mysqli 形式返回结果的方法。每个数据库表都有一个名为“id”的主键列(自动递增)。

我的问题是:是否可以获得所有 SQL 查询的所有受影响(选定)行 ID。我知道当我们进行插入时 - 有一个“最后插入 id”,因此可以回答“CRUD”的“C”问题。路德呢?

我正在尝试构建的是一个可以位于 MysqlCls 类之上的解析器(作为它的代理)。当请求进入并生成整个网站时 - 我希望该解析器保存一个静态数组属性,其中包含 PHP/Mysql 用于回答该 http 请求的所有查询中的所有表 ID。

因此,如果 index.php 有 10 个 SELECT SQL 查询——我想要一个包含 10 个根键的多维数组。每个根键名称都是表的名称。它的值将是一个数组,其中包含用于回答该请求的该表的所有 ID。

我已经弄清楚了 INSERT 部分以及如何获取表名。如何在不修改任何查询的情况下完成剩下的工作?

请注意:我可以添加或附加到 SQL 字符串,但我无法更改其中的内容。

非常感谢

标签: phpmysql

解决方案


推荐阅读