Codeigniter: Eigenartiges Verhalten von $ this-db-like ()

7

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!

    
Glänzende Perlen 20.03.2014, 20:21
quelle

3 Antworten

10

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:

%Vor%     
SolarBear 20.03.2014, 20:46
quelle
12

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

    
Erman Belegu 20.03.2014 21:46
quelle
0

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: Ссылка

    
Ravi Prakash 12.04.2017 08:27
quelle

Tags und Links