Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Case sensible a mayúsculas y minúsculas (distinción)

Estas en el tema de Case sensible a mayúsculas y minúsculas (distinción) en el foro de Bases de Datos General en Foros del Web. Hola amigos de Foros del Web. Estoy tratando de hacer distinciones entre mayúsculas y minúsculas con PHP y MySQL. Por ejemplo en la base de ...
  #1 (permalink)  
Antiguo 20/12/2010, 06:40
Avatar de MaTyS  
Fecha de Ingreso: enero-2009
Ubicación: Mar del Plata
Mensajes: 220
Antigüedad: 15 años, 3 meses
Puntos: 18
Case sensible a mayúsculas y minúsculas (distinción)

Hola amigos de Foros del Web.
Estoy tratando de hacer distinciones entre mayúsculas y minúsculas con PHP y MySQL.

Por ejemplo en la base de datos tengo:

id letra palabra
1 h mirar
2 c volar

Entonces con PHP tengo un codigo similar a este:

Código PHP:
Ver original
  1. <?php
  2. $letra = $_GET["letra"];
  3. $sql = mysql_query("SELECT * FROM palabras WHERE letra='$letra' LIMIT 0,5");
  4. $dat = mysql_fetch_array($sql);
  5. echo "ID: $dat[0] - Letra: $dat[1] - Palabra: $dat";
  6. ?>

Si hago archivo.php?letra=H
me devuelve lo mismo que si hago: archivo.php?letra=h
Hice algo con el mysqld: lower_case_table_names = 1
pero aparentemente no funciono.
Alguna idea, sugerencia, o algo :P?
Saludos, y desde ya muchas gracias.
  #2 (permalink)  
Antiguo 20/12/2010, 06:53
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Case sensible a mayúsculas y minúsculas (distinción)

Cita:
Hice algo con el mysqld: lower_case_table_names = 1
Eso no tiene nada que ver con el contenido de la tabla. Se usa para establecer si los nombres de las tablas se pondrán en minúsculas o no. En un sistema basado en Windows, es indistinto, pero en los sistemas basados en UNIX (Linux, por ejemplo), no es lo mismo ponerle a una tabla "USUARIOS" que "usuarios". El sistema operativo en sí es el que puede diferenciar eso.

En tu caso el problema se resuelve por el tipo de collation de la tabla y/o CHARSET. Debes usar un tipo de charset definido como "bin", como por ejemplo utf8_bin, latin1_bin, etc. Estos charsets son capaces de diferenciar entre mayúsculas y minúsculas, ya que diferencian los caracteres por su código binario y no por su correspondencia alfabética, y en binario "A" <> "a".
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: case
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:02.