Ver Mensaje Individual
  #14 (permalink)  
Antiguo 21/05/2009, 23:33
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: busqueda con like

el cotejamiento del campo titulo donde buscas es muy importante, en este caso lo importante: debe ser latin1_spanish_ci
El problema no es haberte metido en utf8, sino haber mezclado charset y collation de bases, tablas y campos sin saber exactamente qué estabas haciendo, al menos en alguna parte.
Vayamos al principio del todo, para que veas lo que está sucediendo. Ah, y no te acerques a la ventana.
Escribe esto en el PHPMyAdmin que uses en localhost


Código SQL:
Ver original
  1. CREATE TABLE `tabla` (
  2.   `titulo` VARCHAR(50) COLLATE utf8_spanish_ci NOT NULL
  3. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;
  4.  
  5. --
  6. -- Volcar la base de datos para la tabla `tabla`
  7. --
  8.  
  9. INSERT INTO `tabla` (`titulo`) VALUES
  10. ('camión'),
  11. ('camion'),
  12. ('camíon'),
  13. ('cámion');

Ahora con esa pequeña base creada, base cuya codificación es utf8 y su collation utf8_spanish_ci,
lanza la siguiente consulta
SELECT titulo FROM tabla WHERE titulo LIKE 'camion'

Luego nos dices qué ocurre.

Si cambias el cotejamiento del campo titulo a por ejemplo utf8_bin (lo puedes hacer con esto:
ALTER TABLE `tabla` CHANGE `titulo` `titulo` VARCHAR( 50 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL), verás lo que ocurre si haces la misma consulta.

Si todo ha funcionado bien, deberías comprender la importancia de la collation del campo para lo que quieres hacer.

Última edición por jurena; 22/05/2009 a las 00:48