From 421cee37556a078ddae7b3f405b7e92556b58c5e Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Fri, 2 Jan 2026 00:35:01 +0100 Subject: [PATCH] dsd --- src/App/Search.php | 44 ++++++++++++++++---------------------------- 1 file changed, 16 insertions(+), 28 deletions(-) diff --git a/src/App/Search.php b/src/App/Search.php index 6f77e1f..3d5ccba 100644 --- a/src/App/Search.php +++ b/src/App/Search.php @@ -21,18 +21,18 @@ final class Search } $conditions = []; - $params = []; + $bind = []; $i = 0; foreach ($tokens as $tok) { $tok = trim($tok); if ($tok === '') continue; $conditions[] = "(title LIKE :t{$i}a OR teaser_public LIKE :t{$i}b OR description LIKE :t{$i}c OR city LIKE :t{$i}d OR region LIKE :t{$i}e OR zip LIKE :t{$i}f)"; - $params["t{$i}a"] = '%' . $tok . '%'; - $params["t{$i}b"] = '%' . $tok . '%'; - $params["t{$i}c"] = '%' . $tok . '%'; - $params["t{$i}d"] = '%' . $tok . '%'; - $params["t{$i}e"] = '%' . $tok . '%'; - $params["t{$i}f"] = '%' . $tok . '%'; + $bind[":t{$i}a"] = '%' . $tok . '%'; + $bind[":t{$i}b"] = '%' . $tok . '%'; + $bind[":t{$i}c"] = '%' . $tok . '%'; + $bind[":t{$i}d"] = '%' . $tok . '%'; + $bind[":t{$i}e"] = '%' . $tok . '%'; + $bind[":t{$i}f"] = '%' . $tok . '%'; $i++; } @@ -63,13 +63,13 @@ final class Search $whereParts[] = "(lat IS NOT NULL AND lng IS NOT NULL)"; $whereParts[] = "(lat BETWEEN :latMin AND :latMax)"; $whereParts[] = "(lng BETWEEN :lngMin AND :lngMax)"; - $params['glat'] = $lat; - $params['glng'] = $lng; - $params['latMin'] = $lat - $latRange; - $params['latMax'] = $lat + $latRange; - $params['lngMin'] = $lng - $lngRange; - $params['lngMax'] = $lng + $lngRange; - $params['radius'] = $radius; + $bind[':glat'] = $lat; + $bind[':glng'] = $lng; + $bind[':latMin'] = $lat - $latRange; + $bind[':latMax'] = $lat + $latRange; + $bind[':lngMin'] = $lng - $lngRange; + $bind[':lngMax'] = $lng + $lngRange; + $bind[':radius'] = $radius; } $where = $whereParts ? ('WHERE ' . implode(' AND ', $whereParts)) : ''; @@ -81,22 +81,10 @@ final class Search $sql .= " ORDER BY starts_at ASC"; } $sql .= " LIMIT :lim"; + $bind[':lim'] = (int)$limit; $stmt = $this->pdo->prepare($sql); - foreach ($params as $k => $v) { - $stmt->bindValue(':' . $k, $v, \PDO::PARAM_STR); - } - $stmt->bindValue(':lim', (int)$limit, \PDO::PARAM_INT); - if ($distanceFiltering) { - $stmt->bindValue(':radius', $params['radius'], \PDO::PARAM_STR); - $stmt->bindValue(':glat', $params['glat'], \PDO::PARAM_STR); - $stmt->bindValue(':glng', $params['glng'], \PDO::PARAM_STR); - $stmt->bindValue(':latMin', $params['latMin'], \PDO::PARAM_STR); - $stmt->bindValue(':latMax', $params['latMax'], \PDO::PARAM_STR); - $stmt->bindValue(':lngMin', $params['lngMin'], \PDO::PARAM_STR); - $stmt->bindValue(':lngMax', $params['lngMax'], \PDO::PARAM_STR); - } - $stmt->execute(); + $stmt->execute($bind); return $stmt->fetchAll(\PDO::FETCH_ASSOC) ?: []; } }