PDO Conectar con la base de datos MYSQL
PDO Conectar con la base de datos MYSQL. Desde hace algún tiempo que algunas funciones empezaron a quedarse obsoletas como mysql_connect o mysql_fetch_array, esto es posible porque nuestros servidores compartidos mejoran su versión de PHP, es posible que nos salgan continuamente warnings y avisos del tipo: en desuso, si bien es muy sencillo entender la codificación, tenemos la tarea de dejarlo ir y cambiar al nuevo método de conexión.
<?php mysql_connect('localhost', 'usuario', 'contraseña') or die ("Fallo la conexion."); ?>
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in
Veamos algunas soluciones para este tipo de problemas a la hora de conectar PHP con nuestro servidor MYSQL. Quizá en algunas ocasiones utilicemos las estrategias de PHP como el de ocultar esos mensajes que nos da este lenguaje de programación, en la mayoría de los casos puede ser una molestia.
<?php // Desactivar toda notificación de error error_reporting(0); // Notificar solamente errores de ejecución error_reporting(E_ERROR | E_WARNING |E_PARSE); // Notificar E_NOTICE también puede ser bueno (para informar de variables // no inicializadas o capturar errores en nombres de variables ...) error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE); // Notificar todos los errores excepto E_NOTICE // Este es el valor predeterminado establecido en php.ini error_reporting(E_ALL ^ E_NOTICE); // Notificar todos los errores de PHP (ver el registro de cambios) error_reporting(E_ALL); // Notificar todos los errores de PHP error_reporting(-1); // Lo mismo que error_reporting(E_ALL); ini_set('error_reporting', E_ALL); ?>
Simplemente ocultan los mensajes de warnings y demás mensajes. Pero si lo utilizas en jquery para comunicar con mysql, pasando parámetros con json, etc., es posible que el resultado no sea el más esperado por que te añadirá espacios en blanco, saltos de línea mostrando las deficiencias de nuestra programación.
La solución eficaz es dar el salto a la nueva función, para ello nada más simple, os dejo un ejemplo de conexión completa con mysqli_connect y consultar con mysqli_query:
PDO Conectar con la base de datos MYSQL
<?php //Conexion antigua mysql_query('select * from paises', $connection); //Conexion nueva mysqli_query($connection, 'select * from paises'); ?>
a) Ejemplo completo #1 MySQLi
<?php define("bServidor", "localhost"); define("bUsuario", "usuario"); define("bPass","password"); define("bBd","base_de_datos"); $conexion = mysqli_connect(bServidor, bUsuario, bPass, bBd); $consulta = 'select * from paises'; $resultado = mysqli_query($conexion, $consulta); while ($registro = mysqli_fetch_array($resultado)){ //tus resultados de la base de datos } ?>
Ejemplo #1 PDO
Otras soluciones es migrar a PDO
<?php $conn = new PDO('mysql:host=localhost;dbname=basededatos', $usuario, $password); ?>
Si lo ven por primera vez notaran que es muy dificil, pero ingresen al codigo y se daran cuenta de lo sencillo que es: empecemos, creamos con el “new” una instancia de clase PDO PHP, definir el tipo de base de datos con “mysql:”, el servidor “localhost”, el nombre de la base de datos “dbname=basededatos”, y después usando variables, el usuario y la contraseña del servidor de bases de datos (MYSQL).
Como puede haber errores en cada instancia, tenemos que controlarlos mediante el uso de try catch(…){} de la siguiente manera: ejemplo.
<?php try{ $conn = new PDO('mysql:host=localhost;dbname=basededatos', $usuario, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); }catch(PDOException $e){ echo "ERROR: " . $e->getMessage(); } ?>
Si ven no es cosa de otro mundo, de esta manera se conecta a la base de datos MYSQL de manera eficaz y en caso de que suceda un error en la conexion salta un error con un echo. Se puede ver que el try catch reemplazaria la función del or die de la sintaxis habitual de PHP y MySQL, mysql_connect ya esta en desuso en las nuevas versiones de PHP.
Ejemplo #2 PDO
<?php $mbd = new PDO('mysql:host=localhost;dbname=prueba', $usuario, $contraseña); // Utilizar la conexión aquí $sth = $mbd->query('SELECT * FROM foo'); // Ya se ha terminado; se cierra $sth = null; $mbd = null; ?>