Drupal静态查询中的数组

问题描述 投票:0回答:1

我有一个查询,我想将MS SQL语句的结果传递给变量。不确定如何执行此操作。

我的查询:

 if($view->id() == 'program_search'  && 
  !empty($searched_miles_value) &&
  !empty($searched_zip_value) &&
  ($searched_miles_value != 'any')) {

    $connection = \Drupal\Core\Database\Database::getConnection();
    $result = $connection->query("SELECT to_zip FROM zipmaster_xref WHERE from_zip = '".$searched_zip_value."' AND miles = '".$searched_miles_value."'")-> fetchAll();

    $target_zips = $result ; //this line is not working
    foreach($result as $zip) {
      $target_zips[] = $zip->to_zip;
    }

    $query->addWhere('new_group', 'node__field_zip.field_zip_value', $target_zips, 'IN');

我想将$ result数组传递到$ target_zips并循环遍历。谁能帮我解决这个问题?

谢谢!

php pdo drupal drupal-8 drupal-modules
1个回答
0
投票

在获取数据之前,您必须执行查询,例如:

$result = $connection->query("SELECT to_zip FROM zipmaster_xref WHERE from_zip = '".$searched_zip_value."' AND miles = '".$searched_miles_value."'")->execute()->fetchAll();

但是这种用法是完全不正确的。为此避免直接向SQL注入传递变量,请避免使用占位符,请先使用占位符阅读文档。占位符的示例:

$query = $database->query("SELECT id, example FROM {mytable} WHERE created > :created", [
  ':created' => REQUEST_TIME - 3600,
]);

Drupal 8静态查询文档可在以下位置找到:https://www.drupal.org/docs/8/api/database-api/static-queries

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.