Массивы в Drupal stati c запросов - PullRequest
0 голосов
/ 28 января 2020

У меня есть запрос, в котором я хотел бы передать результат оператора 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 и через него l oop. Может ли кто-нибудь помочь мне исправить это?

Спасибо!

1 Ответ

0 голосов
/ 29 января 2020

перед извлечением ваших данных вы должны выполнить запрос, например:

$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 stati c Документацию по запросу можно найти по адресу: https://www.drupal.org/docs/8/api/database-api/static-queries

...