扩展 MySQLi 类以在页面上解释 SQL 查询

发布于 2024-11-17 01:18:22 字数 51 浏览 1 评论 0原文

如何扩展 MySQLi 类来解释给定页面上的所有 SQL 查询?

谢谢。

how can I extend the MySQLi class to explain all SQL queries on a given page?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

俏︾媚 2024-11-24 01:18:22

有几种方法可以做到这一点。这是一个:

首先,您只需在 mysql 语句前添加“EXPLAIN”即可获得解释。请参阅http://dev.mysql.com/doc/refman/5.0/有关 Mysql 的 explain 的详细信息,请参见 en/explain.html

了解 Mysql 调用后,mysqli::querymysqli::prepare 方法都将其第一个参数作为 $query 字符串(旁注:只需使用Reflection 快速测试脚本中的类以获取当前方法或构造原型。您会发现扩展 mysqli_result 类实际上是不可能的,但这在这里应该不是问题)。

知道这一点,

  1. 将调用扩展方法时使用的 mysql 查询字符串存储为扩展“mysqli”类的新属性
  2. 照常传递父方法的返回结果
  3. 创建一个新的自定义方法来调用此字符串属性,并使用任何父方法或通用 Mysqli 调用对其运行新的单独查询。每当您需要在 html 视图中输出查询解释时都会调用这个新方法

There are several ways to do this. Here is one:

To start, you can get an explanation by simply prepending "EXPLAIN " to the mysql statement. See http://dev.mysql.com/doc/refman/5.0/en/explain.html for details on Mysql's explain.

Knowing that Mysql invocation, the mysqli::query and mysqli::prepare methods both take their first parameter as the $query string (side note: just use the Reflection class in a quick test script to get the current method or construct prototypes. You'll find extending mysqli_result class is not actually possible, but that shouldn't be a problem here).

Knowing that,

  1. Store the mysql query string used in the calling of your extended methods as a new property of your extended `mysqli` class
  2. Pass on the parent method's return results as normal
  3. Create a new custom method to call this string property with `explain ` prepended and run a new separate query on that using any parent method or generic Mysqli invocation. This new method will be called any time you need to output the query explanation in your html view
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文