2012-04-01 3 views
1

Ich erstelle eine mysql-Abfrage aus einem Formular mit einem Freitextsuchfeld.
Etwas wie:
SELECT ... FROM ... WHERE 'something' LIKE '%SEARCH%' mysql_query gibt nichts zurück, wenn sie mit Sonderzeichen aufgerufen wird (Die dänischen Zeichen: æøå)

All dies die gültigen Zeilen fein und gibt funktioniert, wenn die Suche darf keine Sonderzeichen enthält, wie die dänischen Zeichen AEOA.

Wenn diese Buchstaben verwendet werden, gibt die Abfrage keine Ergebnisse zurück, obwohl, wenn ich die generierte Abfragezeichenfolge nehme und es in phpMyAdmin stecke, bekomme ich genau das Ergebnis, das ich will.

Dank

+0

„“ obwohl ..alle, wenn ich die erzeugte Abfrage-String nehmen und stecken Sie es in phpMyAdmin i bekommen exacly das Ergebnis will ich „“ === Leider können Sie diese detaillierteren erklären Bitte? – Xfile

Antwort

1

fügen Sie diese Codezeile in Ihrer Verbindungsdatei ...

mysql_set_charset("utf8", $db); 

es ist besser für Sie Ihre Daten in UTF-8 zu kodieren, bevor Sie es in Abfrage passieren ...

+0

mysql_set_charset macht den Trick :). Genial. Ich verwende json, also benutze ich utf8_encode, bevor ich die Ergebnisse übergebe. Aber es scheint, wenn ich vor dem Ausführen der Zeichenfolge codiere, wird es nicht funktionieren. Wie mysql_query (utf8_encode ("...")). – jborch

+0

Sie müssen es tun, wenn Ihre Verbindung herstellen, deshalb habe ich Sie gebeten, es in Ihrer Datei connection.php einzuschließen, anstatt vor der Abfragezeichenfolge hinzuzufügen –

0

Ich bin mit dänischen aber Czech nicht, aber ich denke, dass es die gleichen sind (zumindest von UTF8-Implementierung) - Sie im Sinn verwendet Codierung (original Server-Skript, Datentabellen selbst und auch halten müssen Ihre Datenbankverbindungshandler).

0

Ich denke, Sie haben ein Codierungsproblem, vielleicht verwendet PHPMyAdmin eine andere Client-Codierung als Ihr anderer Client. SET NAMES 'encoding' sollte einfach tun, was Sie brauchen, denke ich.

0

Auch Wir können die PHP-Variable verwenden und sie vor der Auswahloperation konvertieren (unter der Annahme, dass die Datenbank ISOO-8859-2 ist).

Beispiel:

// word with special characters 
$search='kötészeti'; 
// conversion to ISO 
$search=iconv("UTF-8","ISO-8859-2", $search); 
// create search condition 
$condition="SELECT ... FROM ... WHERE 'something' LIKE '%$search%'"; 
// apply query 
mysql_query($condition);