![]() |
Re: LIKE auf mehrere Möglichkeiten anwenden
@generic: Lese mal meinen Beitrag #5
|
Re: LIKE auf mehrere Möglichkeiten anwenden
Btw: statt LIKE kannst du auch REGEX verwenden. Und dann kannst du nach regulaeren Ausdruecken suchen. Das ganze ist wahrscheinlich ein bisschen langsamer (muesstes du mal ausprobieren) aber praktisch. Denn du kannst einfach nach
SQL-Code:
Suchen und bekommst nur alles, was mit einer Ziffer anfaengt. Mit regexen laesst sich natuerlich noch viel mehr anfangen :-).
AND serie REGEX '/^\d/'
|
Re: LIKE auf mehrere Möglichkeiten anwenden
Zitat:
Zitat:
Code:
Diese habe ich aber deswegen eingefügt, dass bei einer Eingabe von einem ' kein SQL-Fehler entsteht, an solche bösen Ideen habe ich noch garnicht gedacht. Aber so sollte das ganze doch auch sicher sein, oder?
[color=#800080]foreach[/color] ([color=#000080][i]$_GET[/i][/color] [color=#800080]as[/color] [color=#000080][i]$value[/i][/color])
{ [color=#000080][i]$value[/i][/color] = mysql_real_escape_string([color=#000080][i]$value[/i][/color]); } :lol: Jetzt wo ihrs sagt: Ich machs dem Angreifer auch so einfach wie es nur geht. Ich stell ihm sogar das ganze Query zur Verfügung:
Code:
Seht euch mal den Quellcode an bitte:
<!-- SQL: Query successful: '
SELECT s.id, serie, band, zusatz, t.type, author, p.publisher AS verlag, isbn, price, pages, publish_month, publish_year, notes FROM page_series AS s, page_types AS t, page_publishers AS p WHERE s.type = t.id AND p.id = s.publisher ORDER BY serie, band ASC' --> ![]() btw: Bin nur der Programmierer; für den Inhalt kann ich nicht haften. :mrgreen: Grüße Faux |
Re: LIKE auf mehrere Möglichkeiten anwenden
Zitat:
Du hast bestimmt nur magic-quotes aktiviert, die das fuer dich machen, denn deine foreach-schleife macht garnichts. Denn in foreach($ar as $v) ist $v nur eine KOPIE der variable. Jede veranderung, die du da reinschreibst ist sofort wieder futsch! Erst ab PHP5 kannst du statt $v auch eine Referenz verwenden (&$v). Dann kannst du auch aendern. Siehe: ![]() |
Re: LIKE auf mehrere Möglichkeiten anwenden
Also um die Performance noch bischen zu heben, würde ich erstmal all diese Konstrukte mit like, substring und regexp verwerfen, da die allesamt grottenlahm sind.
Im Fall wird doch lediglich nach Einträgen gesucht, die mit einem bestimmten Anfangsbuchstaben oder Anfangszeichenkette beginnen. (z.B. mit Buh)
Delphi-Quellcode:
Einen schönen Index auf das Serie-Feld, und das Ganze wird um Ecken schneller sein.
... where serie >= 'Buh' and serie < 'Bui' ...
|
Re: LIKE auf mehrere Möglichkeiten anwenden
Zitat:
Ich wuerde das am Ende aber trotzdem rausnehmen. Das ist irgendwie trafficverschwendung. Gut ist ja nicht viel aber wenn wir uns hier schon ueber jede Performancsteigerung streiten :-). Du kannst dir ja eine Konstante DEBUGGING definieren, die du auf true oder false setzt. Danach kannst du dann soclhe Ausgaben machen. DENK aber an deinen foreach-Fehler! |
Re: LIKE auf mehrere Möglichkeiten anwenden
@yankee:
Äähm.. :oops: Das habe ich natürlich nicht dort stehen. :roll: Ich habe das dort stehen:
Code:
Und in jeder SQL-Aktion benutze ich anstatt von $_GET dann $_SQL.
foreach ($_GET as $name => $value)
{ $_SQL[$name] = $sql->escape($value); } Den vorherigen Code habe ich (wieso auch immer) nur schnell mal hier her geschrieben, weil ich gerade keine Datei offen hatte. :wall: btw: Ja, MAGIC_QUOTES sind aktiv (zumindest hat beim Aufruf von seite?foo=bar'bar die Variable $_GET['foo'] den Wert bar\'bar. Weiß nicht ob das die MAGIC_QUOTES sind.). Ja, das mit der DEBUG-Konstante hab ich auch so gelöst. Grüße Faux |
Re: LIKE auf mehrere Möglichkeiten anwenden
Wenn du magic-quotes anhast und mysql-escape machst, dann encapsed du die ' aber glaube ich doppelt. Bin mir allerdings jetzt gerade nicht so sicher. Denn wenn du magic0quotes anhastm dann brauchst du mysql_escape nurnoch fuer so ein paar komische werte, was aber kein Sicherheitsrisiko mehr darstellt.
*hicks* sry, wenn es sich schwer lesen lest, ich bin to muede und geh jetzt auch mal ins Bett :-)... |
Re: LIKE auf mehrere Möglichkeiten anwenden
Zitat:
Grüße Faux |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz