SELECT aus Datenbankklasse?

Admi

Erfahrenes Mitglied
Ich hab einen für meine Verhältnisse recht umfangreichen Query geschrieben, der aber aus mir bis dato unerkannten Gründen die Arbeit verweigert.

Die Frage konnte im DB-Forum leider nicht geklärt werden, daher frage ich hier nochmal, da es ja in gewisser Weise auch um PHP geht.

Scheitern tuts an der WHERE-Klausel, denn ohne diese funktioniert alles. Nur wenn ich eine kleine Suche über LIKE einbauen will zickt das Script.

Hier nochmal der fragliche Codeschnipsel:

PHP:
$connection->datenbankQuery(" 
  SELECT  
    udb_udb.id, 
    udb_udb.frb_nummer, 
    udb_udb.nachname, 
    udb_udb.vorname, 
    udb_udb.mail, 
    UNIX_TIMESTAMP(udb_udb.datetime) AS datetime, 
    UNIX_TIMESTAMP(udb_udb.datetime2) AS datetime2, 
    udb_udb.active, 
    udb_user.notizen AS notizen2, 
    udb_checkliste.bid AS bid2    
  FROM `udb_udb` 
 LEFT JOIN `udb_user` ON udb_udb.id = udb_user.bid 
  LEFT JOIN `udb_checkliste` ON udb_udb.id = udb_checkliste.bid 
 WHERE udb_udb.nachname LIKE '%".$_REQUEST['name']."%' 
  GROUP BY `udb_udb`.`id`  
  ORDER by $filter $sort");
mysql_error(); meldet einen Syntaxfehler in Line 17?
 
Hatte ich auch schon. Brachte leider keine Änderung, sondern ich glaub nur nen anderen Fehlertext.
 
Probier mal Folgendes:
PHP:
$query = '
	SELECT
	        `udb_udb`.`id`,
	        `udb_udb`.`frb_nummer`,
	        `udb_udb`.`nachname`,
	        `udb_udb`.`vorname`,
	        `udb_udb`.`mail`,
	        UNIX_TIMESTAMP(`udb_udb`.`datetime`) AS `datetime_`, 
	        UNIX_TIMESTAMP(`udb_udb`.`datetime2`) AS `datetime2_`,
	        `udb_udb`.`active`,
	        `udb_user`.`notizen` AS `notizen2`,
	        `udb_checkliste`.`bid` AS `bid2`
	  FROM
	        `udb_udb`
	  LEFT JOIN
	        `udb_user` ON `udb_udb`.`id` = `udb_user`.`bid`
	  LEFT JOIN
	        `udb_checkliste` ON `udb_udb`.`id` = `udb_checkliste`.`bid`
	  WHERE
	        `udb_udb`.`nachname` LIKE "%'.mysql_real_escape_string($_REQUEST['name']).'%"
	  GROUP BY
	        `udb_udb`.`id`
	  ORDER BY
	        '.$filter.' '.$sort.'
	';
$connection->datenbankQuery($query)
	or die(mysql_error().'<pre>'.htmlspecialchars($query).'</pre>');
Wo kommen die Werte der Variablen $filter und sort her? Wurden diese validiert?
Weitergehend wäre der exakte Wortlaut der Fehlermeldung hilfreich.
 
So gehts, danke.

$filter und $sort werden im selben Script über eine Auswahlliste generiert, mit der der User die Filterkriterien auswählen kann. Ist aber hier nicht unbedingt notwendig und deshalb hab ichs rausgeschmissen.

Sind die Hochzeichen bei jedem Tabellen/Spaltennamen eigentlich zwingend? oder nur der Ordnung halber notiert?
 
Zurück