phpbar.de logo

Mailinglisten-Archive

Select-Abfrage mit Array

Select-Abfrage mit Array

Sandor Wonschik Sandor.Wonschik at arvato-mobile.de
Die Feb 15 12:21:44 CET 2005


Hi

zu 1.
Die Grenze liegt i.d.R. weit höher und ist nicht beschränkt auf eine bestimmte Anzahl Elemente. Die Grenze ist NUR abhängig von der Konfiguration des MySQL-Servers. Auszug aus der Doku:
>The number of values in the IN list is only limited by the max_allowed_packet value. 

zu 2.: 
Das ist sehr wichtig, wenn man Strings mit beliebigen Inhalt im IN() unterbringen will.
Bsp: IN ('R\'n\'B','Folk')

Bei numerischem Inhalt ist das nicht nötig. 
Bsp: IN (2,3,4)

:-) Sandor

-----Original Message-----
From: ibekowies at shavingkiwis.de [mailto:ibekowies at shavingkiwis.de] 
Sent: Tuesday, February 15, 2005 11:57 AM
To: mysql-de at lists.4t2.com
Subject: Re: Select-Abfrage mit Array


Hallo,

Nur zwei Tips dazu:

1. Soweit ich weiss kann die IN() Abfrage nur 256 Elemente 
verarbeiten, deshalb bietet sich an, dein Array oder Hash ersteinmal 
in 256er Arrays aufzuspalten (in PHP mittels array_chunk()) um diese 
in einer Schleife nacheinander abzusetzen.

2. Die Elemente in dem Array/Hash sind VOR dem umwandeln in Strings 
MySQL-sicher zu machen, da du den entstehenden String mit den single-
quotes nicht mehr gut escapen kannst. Sprich das Array durchgehen und 
jedes Element mit addslashes bzw. mysql_escape_string sicher machen.

Viele Gruesse, Ilja


On 14 Feb 2005 at 23:30, Norbert Pfeiffer wrote:

> Hallo Alfred,
> 
> > ich moechte eine Select-Abfrage mit einem Array verknuepfen.
> > z.B. so "select Ort from Adresse where Name in($array);"
> hmm,
> im Prinzip ist das richtig, aber eben nur im Prinzip.
> 
> Wenn Du das Array mit:  echo $array;  anzeigen willst,
> klappt das ja auch nicht. Du musst halt aus dem Array
> einen String formen und den in das Query einfuegen:
> <?
> $array = array('Bernd', 'Rolf', 'Hans', 'Egon');
> $strng = "'".implode($array, "', '")."'";
> $query = "select Ort from Adresse where Name in ($strng)";
> echo $strng."\n";
> echo $query."\n";
> ?>
> Nun sollte es gehen ...
> 
> 
> m. b. G. Norbert
> _____________________
> normal:  02686-987103
> Notruf:  0163-3613642
> ---------------------
> e.o.m.
> 
> -- 
> Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
> -->>  http://www.4t2.com/mysql 
> 
> 


-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive