[php] Error fatal: clase 'MySQLi' no encontrada


6 Answers

Puede verificar si las bibliotecas mysqli están presentes al ejecutar este código:

if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
    echo 'We don\'t have mysqli!!!';
} else {
    echo 'Phew we have it!';
}
Question

Estoy haciendo un tutorial y estoy obteniendo este error:

Error fatal: clase 'MySQLi' no encontrada (LONG URL) en la línea 8

El código en la línea 8 es:

$mysqli = new MySQLi($db_server, $db_user, $db_pass, $db_name) or die(mysqli_error());

Vi en línea que alguien dijo para ver si estaba activado en mi phpinfo (), pero no había nada en la lista debajo para "mysqli".

Además, estoy ejecutando PHP versión 5.2.5




Esto resolvió el error inicial "no encontrado" para mí. Tenga en cuenta la barra invertida, funciona como un sueño ahora. Solo es necesario cuando se usa un espacio de nombres pero ¿quién no?

$ mysqli = new \ MySQLi ($ db_server, $ db_user, $ db_pass, $ db_name) o die (mysqli_error ());




El zip de PHP incluye la mayoría de las extensiones comúnmente utilizadas (* .dll en windows como php_mysqli.dll) bajo el directorio \ ext, sin embargo, no están habilitadas por defecto. Es posible que esté recibiendo este error fatal al intentar usar MySQLi:

( ! ) Fatal error: Uncaught Error: Class 'mysqli' not found in C:\myProject\ class.Database.php on line 24

Para habilitar extensiones, abra php.ini (es posible que deba copiar primero php.ini-development como php.ini) y elimine el comentario (o agregue) estas dos líneas:

extension_dir = "ext"

Y cualquier extensión particular para la que esté obteniendo errores fatales, es decir, para mysqli:

extension=mysqli



Mi OS es Ubuntu . Resolví este problema usando:

sudo apt-get install php5-mysql



Puede usar una clase manuscrita MYSQLi , por lo que no necesita instalar mysqli. Es la única solución si no eres dueño del servidor.




Algunas distribuciones (como Gentoo ) admiten varias instalaciones de PHP, y debe asegurarse de que está utilizando una con mysqli instalado y habilitado.

En Gentoo, había instalado un nuevo PHP (con el indicador mysqli USE habilitado), pero necesitaba activar la nueva versión de PHP (ya que el anterior debe haber perdido mysqli):

# eselect php list apache2
  [1]   php5.3 *
  [2]   php5.5
# eselect php set apache2 2
You have to run `/etc/init.d/apache2 restart' for the changes to take effect
# /etc/init.d/apache2 restart



Si está llamando "nuevo mysqli (..)" desde dentro de una clase con espacio de nombres, es posible que vea un error similar. Error Fatal error: Class 'foo\bar\mysqli' not found in . La forma de solucionar esto es establecerlo explícitamente en el espacio de nombres raíz con una barra diagonal inversa anterior, como sigue:

<?php 
$mysqli = new \MySQLi($db_server, $db_user, $db_pass, $db_name) or die(mysqli_error());



Related



Tags

php php   mysqli