【问题标题】:PDO with Drupal 7?使用 Drupal 7 的 PDO?
【发布时间】:2013-09-18 12:44:26
【问题描述】:

我不想使用 drupal db_ 规则。我宁愿使用我自己的 pdo 技术进行数据库查询和更新等。但我已经设法让 pdo 工作,唯一的问题是我必须在每个自定义页面上使用连接,我社区中的一些用户可以编辑页面并且能够看到连接信息.. require 和 require_once 似乎不起作用。

有没有其他人遇到过这个问题并且知道如何避免它?

【问题讨论】:

  • 如果您将连接代码包含在自定义模块中,您应该能够避免此问题。
  • 所以我需要学习如何创建自定义模块就可以了?
  • 为什么不想使用 Drupal 的 DB 函数?他们怎么了?拥有自己的 PDO 代码意味着每次页面加载至少有两个数据库连接,这将对您网站的性能和可扩展性产生负面影响。
  • 如果您要花时间研究如何不使用它提供的功能,为什么还要为框架而烦恼呢?您知道 Drupal 内部肯定仍会使用其自己的 API,所以您试图实现的任何好处都只是表面上的?如果您对学习 Drupal DB API 感到畏惧,请不要害怕 - 它非常简单,实际上是在 Drupal 站点中使用时对普通的 'ol PDO 的改进。只需尝试在没有它的情况下创建排序表或编号页面,您就会明白我的意思。我必须说,强迫自己使用 PDO 是一种非常奇怪的方法。
  • 我只喜欢使用 PDO,因为就像你说的,这是我最习惯的。我看不到我能够用他们的方法解决同样的问题。我喜欢他们的内容管理,但说到自定义页面,我真的更喜欢我自己的方法。

标签: php mysql drupal pdo drupal-7


【解决方案1】:

您可以创建自己的模块并使用 init 挂钩:

https://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_init/7

function yourmodulename_init() {
  // This code will be executed on every page
}

但是,您应该尝试使用 drupal 数据库机制,因为它带有许多最佳实践和强大的工具。例如。视图集成:

https://api.drupal.org/api/views/views.api.php/function/hook_views_data/7

【讨论】:

    【解决方案2】:

    在 Drupal 7 中,Database::getConnection 允许您检索所有已配置数据库的 DatabaseConnection 对象。 DatabaseConnection 扩展了 PDO 所以如果你真的想绕过 Drupal 的数据库 API(它本身基于 PDO 并且可以重用或扩展 PDO 类),你可以像使用你自己的一样使用它PDO 对象。

    但是,如果您的社区用户能够编辑您的自定义页面,我猜您实际上是在使用 PHP 过滤器将 PHP 代码嵌入 Drupal 节点中。这本身就是一个非常糟糕的主意(比忽略 Drupal 的数据库 API 更糟糕)。相反,您应该考虑为您的需求量身定制的writing custom modules

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-19
      • 1970-01-01
      • 1970-01-01
      • 2011-06-08
      • 2012-11-05
      • 1970-01-01
      • 2015-01-16
      • 1970-01-01
      相关资源
      最近更新 更多