Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z LOWER i UPPER - wyszukiwanie bez rozróżniania wielkości znaków
Forum PHP.pl > Forum > Bazy danych > MySQL
piotr94
Witam serdecznie!
mam skonstruowany system wyszukiwania na pytaniach typu LIKE
  1. SELECT * FROM tabela WHERE pole LIKE '%wartosc%';

chcę dodać jednak modyfikację, tak aby wyszukiwarka nie rozróżniała wielkości znaków.
wszystko działa, jednak problem stanowią polskie znaki:
  1. mysql> SELECT UPPER('żukowo');
  2. +-----------------+
  3. | UPPER('żukowo') |
  4. +-----------------+
  5. | żUKOWO |
  6. +-----------------+
  7. 1 row IN SET (0.00 sec)

Co w takiej sytuacji najlepiej zrobić?
Z góry dzięki za pomoc.
wookieb
ustawić kodowanie tabel, pól, połączenia na polskie albo ut8_unicode_ci
piotr94
niestety usługodawca klienta nie udostępnia możliwości zmiany kodowania składowania znaków - nadal stoi przestarzałe iso...
Czy jest jakaś inna możliwość oprócz replace, aby tego dokonaćquestionmark.gif
wookieb
To co ty masz za usługodawce? Syna Hitlera? Sorry ale to do tego służy i powinieneś wymagać takiej zmiany. Inna opcja jest bezsensowna.
piotr94
nie moja sprawa jakiego usługodawce wybrał klient...
ale być może uda się zmienić to kodowanie, więc po problemie, bo lokalnie gdy wszystko jest ustawione jak trzeba działa bez zarzutów
EDIT:
działa bez zarzutów, ale tylko w phpmyadmin, przez skrypt php wyrzuca mi takie coś:
Skrypt:
  1. <?
  2. $_POST['g']=stripslashes($_POST['g']);
  3. ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  4. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  8. </head><body>
  9. <form action="test.php" method="POST">
  10. <input type="text" name="g" value="<?echo(htmlspecialchars($_POST['g']));?>" style="width:100%;" /><br />
  11. <input type="SUBMIT" value="GO" /><hr />
  12. </form>
  13. <?
  14. mysql_connect('127.0.0.1','piotr94','piotr94');
  15. mysql_select_db('zukowo');
  16. mysql_set_charset('utf8_polish_ci');
  17. if($_POST['g']){
  18. $q=mysql_query($_POST['g']);
  19. echo('<pre>');
  20. while($wynik=mysql_fetch_array($q)){
  21. print_r($wynik);
  22. }
  23. echo('</pre>');
  24. }
  25. ?>
  26. </body></html>

zapytanie: SELECT LOWER('Ż')
wynik:

Array
(
[0] => ?
[LOWER('Ż')] => ?
)
całą baza jest kodowana na utf8_polish_ci, porównywanie znaków także, co jest więc nie tak??
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.