Ich habe eine einfache Abfrage zum Durchsuchen eines Schlüsselworts in der Datenbank geschrieben.
%Vor%Nun lautet die von Codeigniter generierte Abfrage:
%Vor% Woher kommt der nachgestellte \
in der Abfrage? Dies führt zu einer fehlerhaften Suche und gibt die Daten, die sich tatsächlich in der Datenbank befinden, nicht zurück. Ich habe alles überprüft und nichts scheint mit dem Code, den ich geschrieben habe, falsch zu sein. Bitte helfen Sie!
Wenn Sie ein wenig in die Interna von CodeIgniter eintauchen, werden Sie feststellen, dass die Funktion $this->db->like()
spezielle Sonderzeichen entzieht - einschließlich natürlich %
.
Ich denke nicht, dass like()
Ihnen bei Ihren speziellen Bedürfnissen helfen wird. Ihre beste Wette, denke ich, wäre, das Problem zu umgehen und eine where
-Funktion zu verwenden, die Ihre LIKE
-Klausel enthält:
Sie versuchen es einfach so:
%Vor%Wenn Sie steuern möchten, wo der Platzhalter (%) platziert wird, können Sie ein optionales drittes Argument verwenden. Ihre Optionen sind 'Vorher', 'Nachher' und 'Beide' (was der Standardwert ist).
Beispiel:
%Vor%Wenn Sie den Platzhalter (%) nicht verwenden möchten, können Sie das optionale dritte Argument mit der Option 'none' übergeben.
Beispiel:
%Vor% ABER, für Ihr Beispiel müssen Sie suchen wie "%keyword sample%"
oder wie "%keyword%" OR "%simple%"
;
Zum Beispiel:
%Vor%ODER
%Vor%Weitere Informationen finden Sie CodeIgniter-Benutzerhandbuch
Verwenden Sie die Methode escape_like_str()
.
Die escape_like_str()
-Methode sollte verwendet werden, wenn Strings in LIKE
conditions verwendet werden sollen, so dass LIKE
Wildcards %
, _
in der Zeichenkette ebenfalls korrekt maskiert sind. Es kann nicht automatisch die Bedingung ESCAPE
!
für Sie hinzufügen, und Sie müssen dies manuell tun.
Ich hoffe, es hilft.
%Vor%Quelle: Ссылка
Tags und Links codeigniter