---
title: "MySql Abfrage aus Array erstellen"
url: "https://www.typo3.net/d/49687-mysql-abfrage-aus-array-erstellen"
source: "typo3.net"
tags: ["Extensions","Entwicklung","Frage"]
created: "2006-09-11"
last_reply: "2006-09-11"
replies: 1
solved: false
page: 1
pages: 1
lang: "de"
---

# MySql Abfrage aus Array erstellen

Extensions › Entwicklung · 1 Antwort · gestartet 2006-09-11

## Eröffnungsbeitrag

**nickno** · 2006-09-11 · [Beitrag #1](https://www.typo3.net/d/49687-mysql-abfrage-aus-array-erstellen/1)

Hallo,
ich habe folgendes Problem. In einer Extension ist eine Suche eingebaut. Man soll eine Tabelle durch diverse Kriterien durchsuchen können. Das Array, was die Suchkriterien übergibt sieht folgendermaßen aus:
myextension[plz][0] = 8
myextension[plz][1] = 9
myextension[plz][2] = 0
myextension[gebiet] = 3
myextension[noch_etwas][0] = ein_wert
myextension[noch_etwas][1] = noch_ein_wert

Wie kann ich aus diesem Array am besten eine Abfrage in MySQL erstellen? Die Werte auf der 2. Ebene sind stets als Alternativ ("OR") zu verstehen. Daher mein Ansatz:

```php
	function generateWhere($sql_arr) {
		// print_r($sql_arr); // DEBUG 
			foreach($sql_arr as $key => $value) {
	
				// Array enthält mehrere Objekte
				if( sizeof($sql_arr[$key]) > 1 ) {
					$tempArray = array();
					foreach($sql_arr[$key] as $values) {
							$tempArray[] = $key . " = ".  $values;
						}
	
					$where[] = "(" . implode(" OR ",$tempArray) . ")";
	
				// Array enthält genau ein Objekt
				} elseif(sizeof($sql_arr[$key]) == 1 ) {
					$where[] = $key . " = ".  $value;
				}
				
			}
			return implode(" AND ", $where);
		}
```

Das Ergebnis passt an dieser Stelle auch. Das Problem ist nun, dass die Postleitzahl ja nicht "8" ist, sondern lediglich mit der 8 anfangen soll. Wie lautet denn hier nun die Abfrage??

Über jeglichen Ansatz würde ich mich freunen, denn ich hab nicht mal nen blassen Schimmer, wo ich hier ansetzen kann.  #angry#

Gruß,Tim

## Antworten

### [#2](https://www.typo3.net/d/49687-mysql-abfrage-aus-array-erstellen/2) · woida · 2006-09-11

Ich weiß ja nicht, was du mit deinem Programm machst, aber wenn du die PLZ als Varchar speicherst, kannst du mit LIKE "8%" alle PLZs finden, die mit 8 beginnen.
Wenn du aber auf einen Integer angewiesen bauchst dein "WHERE PLZ BETWEEN($PLZ*10000,($PLZ+1)*10000)"

---

Quelle: „MySql Abfrage aus Array erstellen“, typo3.net, https://www.typo3.net/d/49687-mysql-abfrage-aus-array-erstellen
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
