Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z LOWER na nowej wersji MySQL
Forum PHP.pl > Forum > Bazy danych > MySQL
intol
Witam, ta sama procedura
  1. SELECT LOWER(nazwa_pola)
  2. FROM nazwa_tabeli
daje różne wyniki na serwerze lokalnym i zewnętrznym. Na serwerze lokalnym wszystko wydaje się być ok, zwracane dane mają postać (metoda print_r(array())):

[0]
{
[0] => 'to jest tekst'
}

natomiast to samo zapytanie na serwerze zewnętrznym zwraca następujące dane:

[0]
{
[0] => 'To jest tekst'
[LOWER(nazwa_pola)] => 'To jest tekst'
}

czyli funkcja LOWER nie przynosi oczekiwanego rezultatu. Jaki może być tego powód?

Dodam: u siebie na localhos'cie mam prawdopodobnie starszą wersję MySQL.
mhs
Sprawdziłem na trzech różnych serwerach i u mnie wynik jest jak najbardziej prawidłowy:

Kod
mysql> SELECT VERSION();
+------------+
| VERSION()  |
+------------+
| 4.1.12a-nt |
+------------+
1 row in set (0.03 sec)

mysql> SELECT LOWER('ASDFasdfASDF');
+-----------------------+
| LOWER('ASDFasdfASDF') |
+-----------------------+
| asdfasdfasdf          |
+-----------------------+
1 row in set (0.02 sec)



Kod
mysql> SELECT VERSION();
+-----------------+
| VERSION()       |
+-----------------+
| 4.1.11-standard |
+-----------------+
1 row in set (0.01 sec)

mysql> SELECT LOWER('ASDFasdfASDF');
+-----------------------+
| LOWER('ASDFasdfASDF') |
+-----------------------+
| asdfasdfasdf          |
+-----------------------+
1 row in set (0.00 sec)



Kod
mysql> SELECT VERSION();
+-----------------+
| VERSION()       |
+-----------------+
| 4.0.25-standard |
+-----------------+
1 row in set (0.05 sec)

mysql> SELECT LOWER('ASDFasdfASDF');
+-----------------------+
| LOWER('ASDFasdfASDF') |
+-----------------------+
| asdfasdfasdf          |
+-----------------------+
1 row in set (0.03 sec)


Sprawdź dokładnie jaką masz wersję MySQL'a, poszukaj może gdzieś masz błędy.
Sh4dow
Kod
mysql> SELECT VERSION();
+-----------------+
| VERSION()       |
+-----------------+
| 5.0.16-standard |
+-----------------+
1 row in set (0.25 sec)

mysql> SELECT LOWER('ASJHhjjhAJ');
+---------------------+
| LOWER('ASJHhjjhAJ') |
+---------------------+
| asjhhjjhaj          |
+---------------------+
1 row in set (0.02 sec)


nowsza wersja tez dziala poprawnie
intol
Ok, u mnie też to działa poprawinie. Problem pojawia się właśnie, gdy wyciągam dane z konkretnych pol:

  1. SELECT LOWER(pole)
  2. FROM tabela


Wynik wtedy wygląda mniej więcej tak:

Array
(
[0] => <img src='picture.jpg' alt=''> Tekst z DUŻYMi literami
[LOWER(pole)] => <img src='picture.jpg' alt=''> Tekst z DUŻYMi literami
)

Może coś takiego jak kodowanie bazy, lub język na której pracuje tabela ma z tym coś wspólnego?
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.