当前位置: 首页>>代码示例>>PHP>>正文


PHP Connection::expandArguments方法代码示例

本文整理汇总了PHP中Drupal\Core\Database\Connection::expandArguments方法的典型用法代码示例。如果您正苦于以下问题:PHP Connection::expandArguments方法的具体用法?PHP Connection::expandArguments怎么用?PHP Connection::expandArguments使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Drupal\Core\Database\Connection的用法示例。


在下文中一共展示了Connection::expandArguments方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: expandArguments

 /**
  * {@inheritdoc}
  */
 protected function expandArguments(&$query, &$args)
 {
     $modified = parent::expandArguments($query, $args);
     // The PDO SQLite driver always replaces placeholders with strings, which
     // breaks numeric expressions (e.g., COUNT(*) >= :count). Replace numeric
     // placeholders in the query to work around this bug.
     // @see http://bugs.php.net/bug.php?id=45259
     if (empty($args)) {
         return $modified;
     }
     // Check if $args is a simple numeric array.
     if (range(0, count($args) - 1) === array_keys($args)) {
         // In that case, we have unnamed placeholders.
         $count = 0;
         $new_args = array();
         foreach ($args as $value) {
             if (is_float($value) || is_int($value) || is_numeric($value)) {
                 if (is_float($value)) {
                     // Force the conversion to float so as not to loose precision
                     // in the automatic cast.
                     $value = sprintf('%F', $value);
                 }
                 $query = substr_replace($query, $value, strpos($query, '?'), 1);
             } else {
                 $placeholder = ':db_statement_placeholder_' . $count++;
                 $query = substr_replace($query, $placeholder, strpos($query, '?'), 1);
                 $new_args[$placeholder] = $value;
             }
         }
         $args = $new_args;
         $modified = TRUE;
     } else {
         foreach ($args as $placeholder => $value) {
             if (is_float($value) || is_int($value) || is_numeric($value)) {
                 if (is_float($value)) {
                     // Force the conversion to float so as not to loose precision
                     // in the automatic cast.
                     $value = sprintf('%F', $value);
                 }
                 // We will remove this placeholder from the query as PDO throws an
                 // exception if the number of placeholders in the query and the
                 // arguments does not match.
                 unset($args[$placeholder]);
                 // PDO allows placeholders to not be prefixed by a colon. See
                 // http://marc.info/?l=php-internals&m=111234321827149&w=2 for
                 // more.
                 if ($placeholder[0] != ':') {
                     $placeholder = ":{$placeholder}";
                 }
                 // When replacing the placeholders, make sure we search for the
                 // exact placeholder. For example, if searching for
                 // ':db_placeholder_1', do not replace ':db_placeholder_11'.
                 $query = preg_replace('/' . preg_quote($placeholder, '/') . '\\b/', $value, $query);
                 $modified = TRUE;
             }
         }
     }
     return $modified;
 }
开发者ID:Nikola-xiii,项目名称:d8intranet,代码行数:62,代码来源:Connection.php


注:本文中的Drupal\Core\Database\Connection::expandArguments方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。