Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO PDO establecer el charset

Estas en el tema de PDO establecer el charset en el foro de PHP en Foros del Web. Después de mysqli decidí dar un paso más respecto a POO y aprender a utilizar la clase PDO. Leyendo el manual de PHP no he ...
  #1 (permalink)  
Antiguo 01/06/2014, 04:18
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
PDO establecer el charset

Después de mysqli decidí dar un paso más respecto a POO y aprender a utilizar la clase PDO.

Leyendo el manual de PHP no he encontrado una manera de establecer el charset en utf-8; pero buscando información alternativa vi que hay hasta 3 maneras distintas de establcer el charset en PDO.

Cita:
For completeness, there're actually three ways to set the encoding when connecting to MySQL from PDO and which ones are available depend on your PHP version. The order of preference would be:

1. charset parameter in the DSN string
2. PDO::MYSQL_ATTR_INIT_COMMAND connection option
3. Run SET NAMES utf8 manually

(a continuación el código de ejemplo que esta persona utiliza)
Y estoy confundido al respecto.

Si alguien puede ayudarme, me gustaria que me explicara las diferencias entre las tres maneras que encontré en stackoverflow, para saber cuando me convendría más una manera que otra o si no hay diferencia entre las tres porque los resultados son los mismos y solo útiles según en qué manera de programar.

Un saludo.
__________________
Ayúdame a hacerlo por mi mismo.
  #2 (permalink)  
Antiguo 01/06/2014, 05:46
lolainas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: PDO establecer el charset

Para establecer el charset, depende si usas en toda la base de datos la misma codificación, si es asi, lo ideal sería en la construcción del objeto:
Código PHP:
Ver original
  1. $db = new PDO('driver:host=host;dbname=dbname;', 'user', 'pass', array(
  2.     PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"
  3. ));

Si por lo contrario tienes contenido con diferentes charset en la misma conexión, depende lo que vayas a sacar:

Código PHP:
Ver original
  1. $db->exec("SET NAMES 'utf8'");
  2. $result_utf8 = $db->query("SELECT contenido en UTF8");
  3.  
  4. $db->exec("SET NAMES 'latin1'");
  5. $result_latin1 = $db->query("SELECT contenido en LATIN1");

Saludos.

Etiquetas: charset, establecer, mysql, pdo, sql
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 23:42.