Deseamos enseñarte la mejor información que descubrimos por todo internet. Queremos que te sea de mucha utilidad y si deseas compartir algún detalle que nos pueda ayudar a mejorar hazlo con total libertad.
Solución:
Te estás perdiendo un S: su SET NAMES
y no SET NAME
:
$this->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");
También es necesario descomentarlo, por supuesto. También, PDO::MYSQL_ATTR_INIT_COMMAND
pueden no ser fijado con PDO::setAttribute()
una vez que haya establecido su conexión a la base de datos (el nombre de la constante lo dice todo), debe especificarlo en el constructor usando el $driver_options
argumento, así:
$this->db = new PDO($this->dsn, $this->username, $this->password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
Una alternativa a esto es simplemente ejecutar esa misma consulta inmediatamente después de conectarse:
$this->db = new PDO($this->dsn, $this->username, $this->password);
$this->db->exec("SET NAMES 'utf8';");
Tuve el mismo problema y descubrí después de probar 1000000 opciones diferentes que el motor mysql predeterminado sigue siendo MyISAM.
Verificando que InnoDB es el motor de almacenamiento predeterminado como tal:
Emitir el comando SHOW VARIABLES LIKE 'have_innodb';
para confirmar que InnoDB está disponible en absoluto.
Luego emita el comando SHOW ENGINES;
para ver todos los diferentes motores de almacenamiento MySQL.
Buscar DEFAULT
en el InnoDB
línea y NO en el MyISAM
línea. Me di cuenta de que mi proporcionado tenía una configuración que me impedía cambiar el motor predeterminado usando SET storage_engine=MYISAM;
. En mi caso contacté a mi proveedor y me dirigió a donde podía cambiar la opción para poder cambiar el motor por defecto. ¡Espero que esto ayude!
Aquí tienes las reseñas y valoraciones
Si posees algún titubeo o capacidad de aclarar nuestro reseña eres capaz de escribir una reseña y con gusto lo ojearemos.