Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: WIELKIE i małe litery
Forum PHP.pl > Forum > Bazy danych
NortoN
mam zapytanie SELECT, ale ono mi wybiera każdy rekord bez sprawdzania wielkości liter a jak wpiszę hasło małymi literami a ktoś inny to samo dużymi to wychodzi że są dwa takie same wpisy przy SELECT

jak rozróżniać małe i WIELKIE litery rolleyes.gif

-------------------------
pozdrawiam NortoN
kurtz
Cytat
jak  wpiszę  hasło  małymi  literami  a  ktoś  inny  to  samo  dużymi  to  wychodzi  że  są  dwa  takie  same  wpisy  przy  SELECT
sprawdz typ tego pola oraz czy aby na pewno nie masz ustawionego typu binary.

-> http://sunsite.icm.edu.pl/mysql/doc/C/H/CHAR.html
NortoN
Witaj

Miałem ustawiony typ VARCHAR wielkość pola (12) zmieniałem na TINYTEXT, na TEXT ale dalej to samo, a sprawdzam w programie phpMyAdmin, atrybutu nie ustawiam

stworzyłem sobie taki test i to samo nie rozpoznaje wielkości liter :cry:

CREATE TABLE klienci (
klientID int(9) NOT NULL auto_increment,
login varchar(12),
login1 tinytext,
login2 text,
PRIMARY KEY (klientID),
FULLTEXT KEY login1 (login1)
)
kurtz
Cytat
Witaj
................


podalem adres url. nie dla ozdoby.
NortoN
no ale tam przecież nic kompletnie nie ma, są typy char, varchar, text tinytext, wszystkie zostały uzyte w tabeli jak widac powyżej i nic dalej nie rozpoznaje w żadnym typie :cry:
kurtz
Cytat
no ale tam przecież nic kompletnie nie ma


bzdura. nie klam.

Cytat
Values in CHAR and VARCHAR columns are sorted and compared in case-insensitive fashion, unless the BINARY attribute was specified when the table was created.
NortoN
sorry kurtz :wink:

już załapałem, aby było mozliwe rozróżnianie dane pole musi miec atrubut BINARY lub bezpośrednio przy select moża go podać

dzięki i sory że nie załapałem od razu.


pozdrawiam NortoN
roobik
Ponieważ temat już jest, a w tej kwestii zdaje się jest jeszcze trochę do zrobienia, to postanowiłem go nieco odświeżyć.
Otóż na stronie mam wyszukiwarkę, do której dodaję poszczególne elementy (by szukała w całym serwisie). Do tej pory nie miałem problemów. Teraz pojawił się "mały" problem. Zacznę od struktury tabeli:
  1. CREATE TABLE `k` (
  2. `id` int(9) NOT NULL AUTO_INCREMENT,
  3. `data_w` date NOT NULL DEFAULT '0000-00-00',
  4. `html` tinyint(1) NOT NULL DEFAULT '0',
  5. `tyt` varchar(255) NOT NULL DEFAULT '',
  6. `w` blob NOT NULL,
  7. UNIQUE KEY `date` (`data_w`),
  8. UNIQUE KEY `id` (`id`)
  9. ) TYPE=MyISAM AUTO_INCREMENT=255 ;

Napisałem w tym temacie, gdyż tylko tu znalazłem ciekawą informację:
Cytat(kurtz)
sprawdz typ tego pola oraz czy aby na pewno nie masz ustawionego typu binary

pole w jest typu blob o atrybucie BINARY
I teraz tak: Jak wpisuję słowo z dużej litery, czyli dokładnie w taki sposób, w jaki jest wpisane do rekordu) wyświetla się i jest OK. Ale jak już wpiszę z małej litery - wyników brak.
Jak więc wyciągnąć dane z tego typu pola wraz z rozróżnieniem wielkości liter?
Kicok
Pole typu blob IMHO niespecjalnie się nadaje do operacji na tekstach, ale jak już musisz traktować te dane binarne jako tekst, to najpierw musisz wykonać rzutowanie:

  1. SELECT * FROM k WHERE CAST( w AS char ) = 'aa'
roobik
...a jak to podłączyć to zapytania:
  1. <?php
  2. $qo = "SELECT * FROM k WHERE id='$id'";
  3. $ro = mysql_query($qo);
  4. $ro = mysql_fetch_array($ro);
  5. ?>

(po tym zapytaniu lecą $title = $ro['tyt']; itd...
Kicok
  1. <?php
  2.  
  3. $qo = "SELECT * FROM k WHERE id='$id'";
  4. $ro = mysql_query( $qo );
  5. $ro = mysql_fetch_array( $ro );
  6.  
  7. if( strcasecmp( $ro['w'], 'jakis tekst' ) === 0 ) {
  8. echo 'Znaleziono';
  9. }
  10.  
  11. ?>


O to ci chodziło? Bo ja tu nie widzę żadnego miejsca, w którym możnaby sensownie użyć sprawdzania wartości kolumny `w` bez uwzględnienia wielkości liter...
roobik
w całości prezentuje się to tak:
  1. <?php
  2. $id = substr($name, 1); 
  3.  
  4. $qo = "SELECT * FROM k WHERE id='$id'";
  5. $ro = mysql_query($qo);
  6. $ro = mysql_fetch_array($ro); 
  7.  
  8. if( strcasecmp( $ro['k'], ".$slowo." ) === 0 ) {
  9.  
  10. $title = $ro['tyt']; 
  11. $text = $ro['w']; 
  12. $data_wyd = $ro['data_w'];
  13.  
  14. $title = stripslashes($title);
  15. $text = stripslashes($text); 
  16. $text = strip_tags($text); 
  17. $text = substr($text, 0, 130); 
  18. $text = eregi_replace($word, '<span style="background-color: #000">'.$word.'</span>', $text); 
  19. $title = eregi_replace($word, '<span style="background-color: #000">'.$word.'</span>', $title); 
  20.  
  21.  
  22. }
  23.  
  24. }
  25. echo '<br><b>Znaleziono: </b>....itd...';
  26. ?>

ale to nie pomaga sad.gif
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.