欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

drupal7 d7 最近的 最后的 sql 语句 有大用 有大大用 有大大大用

[Drupal 7] 在 Drupal 7 中使用 db_select 时如何打印带参数的 SQL 查询?


Drupal 7 为开发人员提供了一种用于生成数据库查询的平台中立格式。如果您是Drupal 开发人员,您可能需要查看 Drupal 生成的实际 SQL 查询以进行调试和测试。如果您想知道在 Drupal 7 中使用 db_select 时如何打印带参数的 SQL 查询,请继续阅读以找出解决方案。

通常我们在 Drupal 6 和 7 中使用 dpm() 来打印字符串和查询。但是如果我们需要执行查询以进行调试,dpm() 将只打印没有那么有用的对象。dpq() 用于打印带有实际参数的查询字符串的情况。dpq() 函数在 Drupal 开发模块中可用。

函数 dpq()

dpq($query, $return = FALSE, $name = NULL)

功能参数

  • $query:一个实现 SelectQueryInterface 的对象。

  • $return:是否返回字符串。默认值为 FALSE。

  • $name:用于标识输出的可选名称。

  • 返回值: $query 对象,如果 $return 为 TRUE,则为查询字符串。

功能定义

function dpq($query, $return = FALSE, $name = NULL) {  if (user_access('access devel information')) {    $query->preExecute();    $sql = (string) $query;    $quoted = array();    $connection = Database::getConnection();    foreach ((array) $query->arguments() as $key => $val) {      $quoted[$key] = $connection->quote($val);    }    $sql = strtr($sql, $quoted);    if ($return) {      return $sql;    }    dpm($sql, $name);  }  return ($return ? NULL : $query); }


例子

$query = db_select('uc_zones', 'uz'); $query->join('uc_countries', 'uc', 'uz.zone_country_id = uc.country_id'); $query->fields('uz', array('zone_code', 'zone_name')); $query->fields('uc', array('country_name')); $query->condition('zone_country_id', array(840, 124), 'IN'); $query->orderBy('country_id', 'DESC'); $query_result = $query->execute();


在这种情况下,如果我想查看具有实际值的查询,则使用 dpq 是唯一的方法。这是上述查询的 dpq 输出。

似乎 执行 dpq (例如 var_dump(dpq(clone $query));exit; )后,刷新下 才能看到drupal_set_message的结果

SELECT uz.zone_code AS zone_code, uz.zone_name AS zone_name, uc.country_name AS country_name FROM {uc_zones} uz INNER JOIN {uc_countries} uc ON uz.zone_country_id = uc.country_id WHERE (zone_country_id IN ('840', '124')) ORDER BY country_id DESC


希望这篇文章有帮助。请记住将您的查询作为评论发布。

参考:http //api.drupal.org/api/devel/devel.module/function/dpq/7


来自  https://www.zyxware.com/articles/3503/drupal-7-how-to-print-an-sql-query-with-arguments-while-using-dbselect-in-drupal-7



普通分类: