Hallo zusammen,
Meine Datenbanken und die entsprechenden Abfragen (hierzu hatte ich schon Fragen gepostet) funktionieren soweit. Es gibt aber noch ein paar für mich nicht lösbare Probleme bzw. Wünsche.
1.
Hier zunächst ein Teil des Codes der Datenbankabfrage:
Dann folgen Datenbankverbindung und SELECT, schließlich
Gebe ich bei der Namensuche Prozentzeichen %%% oder Unterstriche ___ ein (es genügt die Eingabe von drei Buchstaben), werden alle Datensätze abgerufen Dies liegt daran, so viel habe ich herausfinden können, dass diese Zeichen, in Kombination mit LIKE, als Platzhalter interpretiert werden.
Frage 1:
Gibt es eine Möglichkeit, dass bei Eingabe dieser beiden Zeichen der Abruf von Datensätzen unterbunden wird?
2.
Gebe ich bei der Namensuche ein Apostroph ein (z. B. O’Sullivan), erscheint folgende Fehlermitteilung:
MySQL-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 'Sull%' ORDER BY name …
Ich weiß, dazu gab’s schon wiederholt Fragen. Aber meine Tests sämtlicher ergoogelten Tipps schlugen bisher fehl. Auch der Einsatz von
oder
führten zu keinem anderen Ergebnis. Irgendetwas mache ich also falsch.
Frage 2:
Wie muss ggf. der Code ergänzt bzw. geändert werden, damit bei der Suche der Apostroph fehlerfrei nutzbar ist?
3.
Nach
folgt die Abfrage von zwei Checkboxenbereichen mit
dann folgt
Datensätze werden aber nur gefunden, wenn nur einer der beiden Checkboxenbereiche abgefragt wird. Die Kombination beider findet dagegen keine Datensätze.
Frage 3:
Wie muss der Code geändert werden, damit auch eine Kombinationsabfrage möglich ist?
Viele Grüße
hawaiian
Meine Datenbanken und die entsprechenden Abfragen (hierzu hatte ich schon Fragen gepostet) funktionieren soweit. Es gibt aber noch ein paar für mich nicht lösbare Probleme bzw. Wünsche.
1.
Hier zunächst ein Teil des Codes der Datenbankabfrage:
PHP:
if($_POST['name']) $wheres[] = "name LIKE '%{$_POST['name']}%'"; // danke nochmals an Yaslaw
Dann folgen Datenbankverbindung und SELECT, schließlich
PHP:
array_walk_recursive($wheres, 'escapeString');
Gebe ich bei der Namensuche Prozentzeichen %%% oder Unterstriche ___ ein (es genügt die Eingabe von drei Buchstaben), werden alle Datensätze abgerufen Dies liegt daran, so viel habe ich herausfinden können, dass diese Zeichen, in Kombination mit LIKE, als Platzhalter interpretiert werden.
Frage 1:
Gibt es eine Möglichkeit, dass bei Eingabe dieser beiden Zeichen der Abruf von Datensätzen unterbunden wird?
2.
Gebe ich bei der Namensuche ein Apostroph ein (z. B. O’Sullivan), erscheint folgende Fehlermitteilung:
MySQL-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 'Sull%' ORDER BY name …
Ich weiß, dazu gab’s schon wiederholt Fragen. Aber meine Tests sämtlicher ergoogelten Tipps schlugen bisher fehl. Auch der Einsatz von
PHP:
mysql_real_escape_string($_POST['name']);
PHP:
$_POST['name'] = mysql_real_escape_string($_POST['name']);
führten zu keinem anderen Ergebnis. Irgendetwas mache ich also falsch.
Frage 2:
Wie muss ggf. der Code ergänzt bzw. geändert werden, damit bei der Suche der Apostroph fehlerfrei nutzbar ist?
3.
Nach
PHP:
if($_POST['name']) $wheres[] = "name LIKE '%{$_POST['name']}%'";
... (und weiteren Abfragen)
folgt die Abfrage von zwei Checkboxenbereichen mit
PHP:
if($_POST['os']) $wheres[] = "FIND_IN_SET(os,'".implode(',', $_POST['os'])."')";
if($_POST['wm']) $wheres[] = "FIND_IN_SET(wm,'".implode(',', $_POST['wm'])."')";
PHP:
if(count($wheres)>0) $wherestring = "WHERE ".implode(' AND ', $wheres);
Frage 3:
Wie muss der Code geändert werden, damit auch eine Kombinationsabfrage möglich ist?
Viele Grüße
hawaiian