hallöchen,
ich nehme an, dass mein problem wohl eine rechte anfängerfrage ist, aber dennoch benötige ich hilfe:
ich betreibe eine pg-datenbank mit einem php-webprogramm. die db ist utf8-encoded. ich möchte nun mit sql eine %LIKE%-query absetzen, in der nach umlauten gesucht wird. egal was ich anstelle, ein vorhandenes ergebnis wird in php nicht gefunden.
ein paar details:
SHOW server_encoding; UTF8
SHOW client_encoding; UNICODE
die zeile in der datenbank sieht so aus:
id; bez
3;"Broschüre"
die query in php:
$_POST['search_tag'] ist der eingegebene Suchbegriff, in diesem Fall 'Broschüre'.PHP-Code:$result = pg_query('SELECT * FROM schema.table WHERE lower(bez) LIKE \'%'.strtolower($_POST['search_tag']).'%\' ORDER BY id');
ich habe auch versucht, die query wie folgt zu definieren:
jedoch kommt bei keinem von beiden ein Resultat zurück (auch keine fehler). dieselbe query in pgadmin liefert ein passendes ergebnis zurück.PHP-Code:$result = pg_query('SELECT * FROM schema.table WHERE lower(bez) LIKE \'%'.utf8_encode(strtolower($_POST['search_tag'])).'%\' ORDER BY id');
wo liegt der fehler?
danke für alle hinweise
Geändert von andiwini (10.06.2011 um 18:25 Uhr)
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
hi,
gar nichts, das result ist leer, so als ob die zeile nicht existieren würde:
wird zuPHP-Code:echo '#';print($result); echo '#';
keine sorge wegen sql_injection, das ist nur ein hobby-projekt...HTML-Code:##
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
sorry, mein fehler...
ohne utf8_encode:
SELECT * FROM schema.table WHERE lower(bez) LIKE '%brosch�re%' ORDER BY id
mit utf8_encode:
SELECT * FROM schema.table WHERE lower(bez) LIKE '%broschã¼re%' ORDER BY id
im suchfeld wird 'Broschüre' eingegeben, wie kann ich es erreichen, dass die query schlussendlich so aussieht:
das ist die query die funktioniert, aber weder mit noch ohne utf8_encode kommt das raus.PHP-Code:SELECT * FROM druckok.tb_kat WHERE lower(bez) LIKE '%broschüre%' ORDER BY id
Geändert von andiwini (10.06.2011 um 18:52 Uhr)
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
hmm,
wie kann ich feststellen, was php macht? ich verwende die funktion utf8_encode, die laut php-manual einen string in utf8 umwandelt...
ich habs jetzt mit dem hier probiert:
damit kommt folgendes raus:PHP-Code:$query = iconv("ISO-8859-1", "UTF-8", $query);
SELECT * FROM schema.table WHERE lower(bez) LIKE '%broschã¼re%' ORDER BY id
kann man client_encoding umändern, damit es funktioniert? wie und auf was kann man client_encoding ändern?
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Du musst hier verschiedene Encodings beachten.
- Das Encoding deiner Webseite.
- Das Encoding der hereinkommende Daten von der Webseite.
- Das Encoding in deiner Datenbank.
- Das Encoding deiner Datenbankverbindung.
Die sind alle unabhängig voneinander und müssen übereinstimmen.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen