Neuling bei select

BlueWonder

Grünschnabel
Ich bin noch nicht so gut in Datenbankabfragen.....kann einer einen Grund sehen, warum ich hier keine Ergebnisse bekomme?

$sql ="SELECT * FROM `User` WHERE Nick LIKE '%".$Nick."%' AND AlterU >= '$Alterv' AND AlterU <= '$Alterb' "
."AND Groesse >= '$Groessev' AND Groesse <= '$Groesseb' AND Gewicht >= '$Gewichtv' "
."AND Gewicht <= '$Gewichtb' AND Augenfarbe = '$Augenfarbe' AND Haarfarbe = '$Haarfarbe' "
."AND Haarlaenge = '$Haarlaenge' AND Bart = '$Bart' AND Raucher = '$Raucher' AND PLZ LIKE '$PLZ' "
."AND Wohnort LIKE '%".$Wohnort."%' AND Bundesland = '$Bundesland' ";

Nach einer Füllung mit Formulareingaben sieht das so aus:

SELECT * FROM `User` WHERE Nick LIKE '%%' AND AlterU >= '14' AND AlterU <= '27' AND Groesse >= '100' AND Groesse <= '200' AND Gewicht >= '40' AND Gewicht <= '120' AND Augenfarbe = '%' AND Haarfarbe = '%' AND Haarlaenge = '%' AND Bart = '%' AND Raucher = '%' AND PLZ LIKE '%' AND Wohnort LIKE '%%' AND Bundesland = '%'

Ich habe extra bei Alter, Größe und Gewicht ganz viel Spielraum gelassen und auch sonst alles mögliche leer gelassen.
Ich hab in meiner Datenbank mindestens 3 Sätze, die passen würden

Zum Beispiel:

UserID Nick Passwort Email Bestaetigt Logged Geprueft AnmeldeDatum LastVisit Geburtsdatum AlterU Groesse Gewicht Augenfarbe Haarfarbe Haarlaenge Bart Raucher PLZ Wohnort Bundesland PicURL Freitext

1 BlueWonder XXX BlueWonder78@web.de 1 0 1 2003-05-02 19:55:00 2004-05-10 16:53:54 1978-09-06 25 178 67 grün braun kurz nein nein 45147 Essen Nordrhein-Westfalen

Sorry, wenn das ws unübersichtlich is :(
 
Tabellen und Spaltennamen gehören in Backticks und Variablen gehören nicht einfach in einen String eingebunden, mehr kann ich dazu so pauschal nicht sagen.
 
Damit deine Abfrage nicht so kompliziert wird, solltest du dir folgende Seite, speziell den Abschnitt über BETWEEN, durchlesen:
&nbsp;&rsaquo;&rsaquo;&nbsp;MySQL Manual | 7.3.1.2 Vergleichsoperatoren

Demnach könnte die optimierte Abfrage etwa so aussehen:
PHP:
<?php
  $sql ="
SELECT
        *
  FROM
        `User`
  WHERE
        `Nick` LIKE '%".$Nick."%'
    AND `AlterU`BETWEEN ".$Alterv." AND ".$Alterb."
    AND `Groesse` BETWEEN ".$Groessev." AND ".$Groesseb."
    AND `Gewicht` BETWEEN ".$Gewichtv." AND ".$Gewichtb."
    AND `Augenfarbe` = '".$Augenfarbe."'
    AND `Haarfarbe` = '".$Haarfarbe."'
    AND `Haarlaenge` = '".$Haarlaenge."'
    AND `Bart` = '".$Bart."'
    AND `Raucher` = '".$Raucher."'
    AND `PLZ` LIKE '%".$PLZ."%'
    AND `Wohnort` LIKE '%".$Wohnort."%'
    AND `Bundesland` = '".$Bundesland."'
";
?>
Ach übrigens:
&nbsp;&rsaquo;&rsaquo;&nbsp;FAQ der Newsgroups de.comp.lang.php.* - 16.14._Warum soll ich nicht SELECT * schreiben?
 
Zurück