我有一个查询,我想将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中并遍历它。谁能帮我解决这个问题?
谢谢!
答案 0 :(得分: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中找到