gegeben sei
$dummy[0]="der";
$dummy[1]="die";
$dummy[2]="das";
Gesucht werden sollen alle Datensätze, die weder "der" noch "die" noch
"das" enthalten unter Nutzung des Arrays in der Abfrage. Muss ich die
Werte aus dem Array verknüpfen (XY not like "%der% and XY not like
"%die%" and XY not like "%das%") oder gibt es da etwas
eleganteres?
--
Stephan
Ungetestet, MySQL vorausgesetzt:
$query = sprintf( "SELECT * FROM table WHERE NOT MATCH (col) AGAINST
('%s' IN BOOLEAN MODE), mysql_real_escape_string( implode( ' ', $dummy )
) );
MfG
Niels
--
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
| Webdesign · Webhosting · e-Commerce · Joomla! Content Management |
------------------------------------------------------------------
Ums Verknüpfen wirst Du wohl kaum herum kommen. Dies kann man allerdings
relativ elegant hinbekommen, etwa so:
$sql = "SELECT blah FROM blub WHERE xy NOT LIKE '%"
. join("%' AND xy NOT LIKE '%", $dummy)
. "%'";
Aber das findet auch Datensätze nicht, die Wörter wie "Marder",
"Verdienst" oder "dasein" enthalten, also Wörter, die die o.g. Wörter
als Wortteil enthalten.
Nuja, das könnte man ja mit einem regulären Ausdruck statt des LIKEs
erschlagen. Einen Index nutzt das Statement eh nicht, da kommt's auf das
bisschen Overhead für die RegEx-Maschine auch nicht mehr an...
Grüße,
Dominik
--
Wo kämen wir hin, wenn alle sagten, wo kämen wir hin, und niemand
ginge, um einmal zu schauen, wohin man käme, wenn man ginge.
Autor: Kurt Marti (http://de.wikiquote.org/wiki/Kurt_Marti)