Ich versuche herauszufinden, warum, wenn ich einen Punkt (.) In meine Suche einfüge, jedes einzelne Zeichen der Suchergebnisse hervorhebt (es umschließt jedes Zeichen in einem <span class="search-highlight"></span>
) und es zeigt auch nur 3 Tickets, was seltsam ist alle von ihnen haben mindestens einen Punkt in ihnen:Was soll ein Punkt (.) In MySQL-Abfragen tun?
die Abfrage, die die eigentliche Suche hat (zusammen mit den Variablen) ist:
$q = mysql_real_escape_string($_GET['q']);
$query = trim(strtoupper($q));
$query = htmlentities($query, ENT_QUOTES, "UTF-8");
$construct = $is_employee==false ? "user='$userid' AND" : "";
$tickets_result = mysql_query("SELECT `id`, `subject`, `message`, `timestamp`, `user` FROM `tickets` WHERE $construct (upper(subject) LIKE '%".$query."%' OR upper(message) LIKE '%".$query."%')") or trigger_error(mysql_error());
Und meine highlight
Klasse:
Weiß jemand, warum oder wie ein einfacher Punkt (.) Würde dies verursachen und ist es möglich, zu beheben?
Vielen Dank für jede Hilfe im Voraus.
Sounds mag die Suche funktionieren, aber die Hervorhebung ist drunter und drüber. ('.' ist ein beliebiges Zeichen in regulären Ausdrücken, fragen Sie sich, ob es irgendwo im Auszeichnungscode einen regulären Ausdruck gibt?) preg_replace() sieht verdächtig aus. –
Verwenden Sie http://php.net/manual/en/function.mysql-real-escape-string.php, um Ihre Anfrage zu umgehen. Siehe http://php.net/manual/en/security.database.sql-injection.php für weitere Informationen – Maz
@Maz ich benutze das bereits. – Nathan