Dukanos Geschrieben 27. Dezember 2006 Geschrieben 27. Dezember 2006 Hallo Leute, ich versuche über ein Suchfeld mit PHP eine Tabelle zu durchsuchen. Die Funktion in der DB-Zugriffsklasse sieht so aus: public function findUser($value) { $result = mysql_query("SELECT * FROM customer WHERE (user_name LIKE %'".$value."'%) OR (first_name LIKE %'".$value."'%) OR (family_name LIKE %'".$value."'%) OR (street LIKE %'".$value."'%) OR (house_no LIKE %'".$value."'%) OR (zip_code LIKE %'".$value."'%) OR (city LIKE %'".$value."'%) OR (creditcard_no LIKE %'".$value."'%) OR (email LIKE %'".$value."'%)") or die (mysql_error()); return $result; } Allerdings wirft er mir immer den Fehler: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%'suchbegriff'%) OR (first_name LIKE %'suchbegriff'%) OR (family_name LIKE %'suchbegriff'%) OR (street LIKE' at line 1 Serverversion ist: 5.0.24a Ich hab nichts dazu gefunden... also jedenfalls nichts, was mir sagt, dass der obige code falsch wäre. Hat jemand nen Tipp? Grüße
grueni Geschrieben 27. Dezember 2006 Geschrieben 27. Dezember 2006 Setz mal die % in die einfachen Anführungszeichen. WHERE (user_name LIKE '"%.$value.%"') Ich kann leider kein PHP, aber ich hoffe, du verstehst, was ich meine. Im resultierenden SQL-String müssen die % auf jeden Fall zwischen die Anführungszeichen.
robotto7831a Geschrieben 27. Dezember 2006 Geschrieben 27. Dezember 2006 Hallo, schieb die % Zeichen zwischen ' und " und zwischen " und '. Frank
derJan Geschrieben 28. Dezember 2006 Geschrieben 28. Dezember 2006 Je nach Einsatzgebiet deiner Anwendung solltest du dir Gedanken machen über SQL-Injection und ob du nicht besser Stored Procedures verwenden solltest... z.B. About Security #13: Mit Stored Procedures gegen SQL-Injection - entwickler.com
Dukanos Geschrieben 28. Dezember 2006 Autor Geschrieben 28. Dezember 2006 Stored Procedures sind in der Überlegung gewesen, aber entspricht imho nicht der Trennung von Logik und Datenspeicherung. Mal davon abgesehen kann man mit trim(), striptag() etc. auch schon einiges abfangen. Und die Anwendung dient nur zur Anschauung, also wird nie einem hacker-angriff ausgesetzt werden :-) Danke trotzdem für den Hinweis
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden