miércoles, 7 de septiembre de 2011

Conexión a MySQL desde PHP

En muchas de las aplicaciones que realicemos vamos a necesitar acceso a datos. Hoy voy a comenzar una serie de tres entradas para hablar de las conexiones a diferentes gestores de bases de datos desde PHP. Estaremos hablando de MSSQL, Interbase de Firebird y MySQL que por ser el más comunmente utilizado es el que le da inicio a la serie.

Empezamos entonces...

Para conectarse a una base de datos MySQL PHP cuenta con dos funciones:

mysql_connect(server_name, login, password)
mysql_pconnect(server_name, login, password): Esta función abre una conexión persistente a la base de datos.

La diferencia fundamental entre las dos es que durante la conexión la función mysql_pconnect() chequea primero si ya existe algún enlace persistente abierto con los  mismos parámetros, y si es así, utiliza ese que ya existe, en vez de abrir una nueva conexión.
Otra diferencia es que como es persistente, la conexión no se cierra, permanece siempre abierta para ser utilizada en el futuro. En el caso de mysql_connect() la conexión debe cerrase cuando se termina de trabajar con ella utilizando la función mysql_close($conexion).

Vale aclarar que todos los parámetros son opcionales, si se deja alguno vacío asume los parámetros por defecto: server_name = localhost , login = nombre del usuario propietario del proceso y password vacía.

Bueno, dadas las explicaciones previas veamos un ejemplo.

<?
// yo he decidido declarar variables para los parámetros pero se pueden pasar directamente.
$server_name="miservidor";  // puede ponerse el nombre o el IP, si fuera local sería localhost
$login="root"; // el nombre de usuario para conectarse a la base de datos
$password="rootpass"; //la contraseña de ese usuario

$conexion=@mysql_pconnect($server_name,$login,$password) or die("Error al conectarse al servidor");

//luego seleccionas la BD que vas a utilizar de ese servidor. En este caso se llama Prueba
 @mysql_select_db("Prueba ",$conexion) or die("Error al conectarse a la base de datos");
   
?>

Mi recomendación: Tener la conexión aparte para que pueda ser utilizada en las diferentes páginas y en caso de alguna modificación en los datos de acceso tengas que modificar un solo archivo.

Una vez conectados podemos realizar las operaciones fundamentales sobre nuestra base de datos: Actualización y Consultas para lo que PHP cuenta con la función mysql_query("cadena SQL",$conexion);

Pero veamos un ejemplo:
Si como te sugerí pusiste tu conexión en un archivo aparte lo primero que debes hacer es referenciar ese archivo en la página actual donde vas a hacer tus consultas.
Lo puedes hacer utilizando require("../conexion.php") o include("../conexion.php")  donde ../conexion.php es la ruta completa al archivo conexion.php.

La consulta:
<?
//en este caso seleccionamos el Número y Nombre de los clientes de una Tabla Clientes.
$resultcliente = mysql_query("select NCliente, NombreCliente from clientes",$conexion);
?>

Mostrar los Resultados
Se pueden mostrar los resultados de muchas formas. Yo particularmente prefiero llevar el resultado de la consulta a objetos con la función mysql_fetch_object(''resultado de consulta'') porque creo que es mucho más fácil para trabajar, ya que podemos referirnos a los resultados con $variableobjeto->nombrecolumna.
<?
while ($c=mysql_fetch_object($resultcliente)) //como hay varias filas lo pongo dentro de un ciclo
{
echo $c->NombreCliente; //imprimo los resultados
 }//cierro el while
?>
Nota: Dentro del ciclo puedo asignar el resultado de la consulta a cualquier elemento HTML como listbox, checkbox u otros es tan sencillo como asignarle al elemento el resultado de la consulta.
Ej.
<?
echo (''<select name=\"cliente\" size=\"1\"  id=\"cliente\">");
while ($c=mysql_fetch_object($resultcliente))
            {           
               echo "<option value=\"$c->NCliente\" > $c->NombreCliente</option>";
            }//cierro el while
echo ("</select>'');
?>
Actualizaciones
Para actualizar los registros de la base de datos (entiéndase insertar, actualizar o eliminar registros) se utiliza la misma función mysql_query lo que cambia la cadena sql que le pasamos.
Por ejemplo insertamos un Cliente
<?  mysql_query ('' Insert into Clientes ($textboxNombre); ?>
Donde TextBoxNombre es la variable que me recoge por Post o Get el valor de un textbox donde entro el nombre que deseo insertar.

Bueno hasta aquí mi granito de arena, espero les sirva de ayuda, cualquier duda o sugerencia pueden comentarla aquí.

No hay comentarios:

Publicar un comentario