---
title: "MYSQL Select und Array"
url: "https://www.typo3.net/d/95853-mysql-select-und-array"
source: "typo3.net"
tags: ["Extensions","Entwicklung","Frage"]
created: "2010-01-14"
last_reply: "2010-01-18"
replies: 7
solved: false
page: 1
pages: 1
lang: "de"
---

# MYSQL Select und Array

Extensions › Entwicklung · 7 Antworten · gestartet 2010-01-14

## Eröffnungsbeitrag

**Lycanthropy** · 2010-01-14 · [Beitrag #1](https://www.typo3.net/d/95853-mysql-select-und-array/1)

Guten Abend,

ich bin leider im Forum und auch sonst nirgends wirklich fündig geworden was einer Lösung meines Problems helfen könnte.

Ich hole aus einer Tabelle die Werte mehrerer Datensätze raus, jetzt ist allerdings ein Feld dabei, das durchaus ein Array enthalten kann (Werte durch , getrennt).

Die Funktion der Extension ist folgende: Ich lege auf einer Vorlagen Seite Datensätze ab, und gebe ihnen in dem Feld "relation" die Info mit, auf welchen Seiten (Id) sie liegen sollen.
In der rechten Spalte meiner Website ist überall das Plugin zur Ausgabe der Datensätze. Jetzt sollen aber auch nur die Datensätze ausgegeben werden, die für die Seite bestimmt sind, das heisst das Plugin soll jedes mal die Überprüfung durchlaufen, ob eine der im Datensatz hitnerlegten Ids (im Feld relation) mit der Seiten-Id der aktuellen Seite übereinstimmt (relation == $pid).

```php
$query = "SELECT * FROM tx_container_content WHERE deleted = '0' and hidden = '0' order by crdate";
$res = mysql(TYPO3_db, $query);
	while ($data = @mysql_fetch_assoc($res)) {
		$headline = $data[headline];
		$seiten = $data[relation];

$ausgabe .= '<div>'.headline.'</div>';
}

$content .= ''.$ausgabe.'';
	
return $this->pi_wrapInBaseClass($content);
```

$seiten ist nun ein array mit (unter umständen) mehreren 100 kommagetrennten ids.
Ich habe auch schon diverse Möglichkeiten mit explode probiert, innerhalb der while-Schleife bekomm ich das aber nicht ganz auf die Kette.
Kann mir vielleicht jemand sagen, ob es generell richtig ist hier mit explode zu arbeiten oder kann ich vielleicht doch schon bei der myqsql abfrage etwas anders gestalten?

## Antworten

### [#2](https://www.typo3.net/d/95853-mysql-select-und-array/2) · meckpo · 2010-01-15

Hallo,

für die Performance ist es natürlich gar nicht gut, die Werte in einem Feld zu haben und dann nachträglich splitten zu müssen. Besser wäre also eine Lösung mit einer zweiten Tabelle zu finden in der man die Relations speichert.

Aber zu deiner Frage: prinzipiell ist explode richtig. Mit einem kleinen Trick kannst du das aber auch gleich in der mySQL-Abfrage machen:

```php
$query = "SELECT * FROM tx_container_content WHERE CONCAT(',',relation,',') LIKE '%,".$pid.",%' AND deleted = '0' and hidden = '0' order by crdate";
```

### [#3](https://www.typo3.net/d/95853-mysql-select-und-array/3) · Lycanthropy · 2010-01-15

Hallo Martin,

danke für die Hilfe, das war genau das was ich gesucht habe!

### [#4](https://www.typo3.net/d/95853-mysql-select-und-array/4) · GoSnA · 2010-01-18

Ich hab das mal mit folgender WHERE Bedingung im SQL gelöst:

> $sql = 'SELECT * FROM table WHERE FIND_IN_SET('.$GLOBALS['TSFE']->id.',relation)';

### [#5](https://www.typo3.net/d/95853-mysql-select-und-array/5) · steffenk · 2010-01-18

wenn schon dann

```php
$sql = 'SELECT * FROM table WHERE FIND_IN_SET(' . $GLOBALS['TSFE']->id . ',relation) > 0';
```

### [#6](https://www.typo3.net/d/95853-mysql-select-und-array/6) · GoSnA · 2010-01-18

> **steffenk schrieb:**
>
> wenn schon dann
>
> ```php
> $sql = 'SELECT * FROM table WHERE FIND_IN_SET(' . $GLOBALS['TSFE']->id . ',relation) > 0';
> ```

Naja, sobald das Find in set nen ergebnis bekommen hat welches ungleich 0 ist, ist doch die bedingung erfüllt und somit ist das ">0" nicht notwendig, oder sehe ich das falsch?

### [#7](https://www.typo3.net/d/95853-mysql-select-und-array/7) · steffenk · 2010-01-18

ja schon, wenn MySQL 0 von NULL unterscheidet.

### [#8](https://www.typo3.net/d/95853-mysql-select-und-array/8) · GoSnA · 2010-01-18

Die Funktion liefert aber nur NULL wenn beide argumente leer sind, ansonsten liefert sie 0 wenn nichts gefunden oder 1 bis N wenn was gefunden wurde.

Und da Die Page ID eigentlich immer gesetzt ist sollte dies kein problem sein ;)

Aber gut, bringt nichts darüber stunden lang zu diskutieren, klappt beides und wärs sicher haben will nimmt die zweite Variante ;)

---

Quelle: „MYSQL Select und Array“, typo3.net, https://www.typo3.net/d/95853-mysql-select-und-array
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
