phpbar.de logo

Mailinglisten-Archive

Select-Abfrage mit Array

Select-Abfrage mit Array

ibekowies at shavingkiwis.de ibekowies at shavingkiwis.de
Die Feb 15 15:01:41 CET 2005


Hallo,

Zu 2.
Klar, wenn man den Input bereits validiert hat kann man das 
weglassen. In PHP oder anderen Sprachen, in dem eine Variable jeden 
Typ haben kann, kann man sich nicht immer darauf verlassen, dass da 
wirklich ein numerischer Wert drinne steht. Anstatt die Input-Kette 
immer bis zum Anfang zurueckzuverfolgen und abzuwaegen, ob ich da die 
volle Kontrolle haben kann, tue ich alles was ich in die Datenbank 
tue doch lieber noch einmal kurz vor dem benutzen "sicher" machen. 
Also der entsprechende Type-Cast oder ein escapen und Mysql type-
casten lassen.


Viele Gruesse, Ilja


On 15 Feb 2005 at 12:21, Sandor Wonschik wrote:

> 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 
> 
> 


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


php::bar PHP Wiki   -   Listenarchive