2016-05-05 8 views
0

Ich versuche, die COLLATE-Klausel in einer MySQL-Abfrage zu verwenden, und ich erhalte einen Fehler. Hier ist mein Code:Fehler beim Verwenden von COLLATE in einer Mysql-Abfrage

<?php  

$sql = "SELECT * FROM users WHERE first_name LIKE '%" . $name ."%' COLLATE uf8_general_ci"; 

    $members = User::find_by_sql($sql); 

?> 

Wenn ich die Abfrage ordnungsgemäß funktioniert die COLLADE Klausel herausnehmen. Stimmt etwas mit der Syntax nicht?

Danke!

+0

Was ist die Fehlermeldung Sie bekommen? – Sean

+0

@Sean "Datenbankabfrage fehlgeschlagen Letzte SQL-Abfrage: SELECT * FROM Benutzer WHERE Vorname like '% arturo%' COLLATE uf8_general_ci" –

+0

Das sieht aus wie eine generische PHP-Fehlermeldung. Haben Sie versucht, die Abfrage direkt in mysql auszuführen, um herauszufinden, was die mysql-Fehlermeldung ist? – Sean

Antwort

2
SELECT * FROM users WHERE first_name LIKE '%" . $name ."%' COLLATE uf8_general_ci 

Welcher Vergleich ist UF8? Tippfehler können leicht übersehen werden.

Es muss sein:

SELECT * FROM users WHERE first_name LIKE '%" . $name ."%' COLLATE utf8_general_ci 

Auch darauf achten, dass die Sortierung Sie mit Ihrem Zeichensatz ist kompatibel verwenden. (Zum Beispiel eine Zusammenstellung von UTF8 ist nicht kompatibel mit UTF8MB4)

Mit dieser Anweisung Ihre charset und Sortierung zu überprüfen (von MySQL Database Character Sets and Collation)

SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'db_name'; 
+0

Oh, Sie haben Recht mit dem Tippfehler. Jetzt bekomme ich "COLLATION" utf8_general_ci 'ist nicht gültig für CHARACTER SET' cp850 'Meine Tabellenkollation ist auf uft8_general_ci gesetzt. Kannst du mir zeigen, wo ich den Zeichensatz ändern kann, welcher mit UTF8 kompatibel ist? Danke. –

+0

Verwendung this: ALTER TABLE 'TABLE' WIRD IN CHARAKTERSATZ UMGEBUNG UTF8 COLLATE UTF8_UNICODE_CI. – MiSAKACHi

+0

Hat das und immer noch "COLLATION 'utf8_general_ci' ist nicht gültig für CHARACTER SET 'cp850'. Auch wenn Sie nach den Informationsschemata mit der Aussage in der Antwort fragen, die Sie vorsichtig angegeben haben, bekam ich "Table 'table_name.information_schemata' doesnt exist" ... –

Verwandte Themen