Son necesarios:
- Conocimientos Previos de SQL
- Conocimientos previos de HTML
- Haber leido los capitulos anteriores de PHP publicados en esta seccion.
Consultas SencillasLas consultas a las base de datos deben ser bien programadas, desde varios puntos de vista. Hacer consultas a una base de datos usando PHP es muy sencillo, por la idea de que ya trae una "clase" que permite no tener que escribir todo el codigo de la conexion y los querys nuevamente.
PHP trae ahora unas funciones que permiten una comunicacion sencilla con bases de datos MySQL y PostgreSQL. En este tutorial hablaremos solo sobre las conexiones MySQL, que son las mas usadas a nivel medio e iniciado.
La funcion PHP que permite conectarnos con un servidor MySQL es la siguiente:
<?php
mysql_connect("host","user","password","socket_linux[opcional]");
?>
Host:Es la direccion de red del servidor. EJ: localhost,
www.xatiyaro.net, etc
Solo puedes especificar un solo servidor mysql por funcion.
User:Es el nombre de usuario que se ha creado en el servidor MySQL y que contiene los privilegios necesarios para que nuestra aplicacion funcione.
Password:Es la contraseña a dicho usuario.
Es altamente recomendable, usar una variable para asignar el objeto resultante de la conexion, para su uso posterior...
<?php
$con = mysql_connect("host","user","password");
?>
Si se ha podido conectar, la funcion devuelve
true (valor booleano) y si la conexion al servidor fallo, se devuelve
false.
Usando esto, podemos hacer un "catch" o un resorte que atrape un posible error de conexion a la base de datos...
<?php
$con = mysql_connect("host","user","password");
if ($con == false) {
die("Conexion a la base de datos ha fallado");
}
?>
Bien, sabiendo conectarnos a un servidor MySQL, esto aun no nos posibilita poder hacer consultas. Primero tenemos que elegir una base de datos.
Recordemos:
Servidor MySQL -> Base de datos -> Tablas -> Columnas y Filas (Datos).
Para seleccionar una base de datos dentro del servidor MySQL (una vez conectados) hacemos esto...
<?php
$con = mysql_connect("host","user","password");
if ($con == false) {
die("Conexion a la base de datos ha fallado");
}
$sel = mysql_select_db("nombre_de_db",$con);
if ($sel == false) {
die("No se encontro la base de datos");
}
?>
Con la funcion
mysql_select_db(); podemos elegir una base de datos, fijense que se le pasan los argumentos
nombre y de segundo el identificador de conexion (la variable que usamos para
mysql_connect).
<?php
mysql_select_db("db",identificador de conexion);
?>
Un ejemplo usando variables:
Archivo configuracion.php:
<?php
$myHost="localhost";
$myUser="th6";
$myPass="th6123";
$myDb="foro";
?>
Archivo index.php:
<?php
include "configuracion.php";
$con = mysql_connect($myHost,$myUser,$myPass);
if (!$con) {
die ("no se pudo conectar al servidor MySQL");
}
$sel = mysql_select_db($myDb,$con);
if (!$sel) {
die("no se pudo seleccionar la base de datos");
}
?>
Una vez conectado y seleccionado la base de datos, podemos hacer consultas sencillas.
Para hacer consultas a la base de datos, usamos la funcion php
mysql_query(); de la siguiente forma...
Supongamos que tenemos una base de datos llamada
main, donde tenemos la siguiente estructura:
Nombre Email Password
th6 th6@th6.com asdasdasd
manuel manuel@1.com manuel123
sofia sofia@sofia.com sofia456
<?php
include "configuracion.php";
$con = mysql_connect($myHost,$myUser,$myPass);
if (!$con) {
die ("no se pudo conectar al servidor MySQL");
}
$sel = mysql_select_db($myDb,$con);
if (!$sel) {
die("no se pudo seleccionar la base de datos");
}
$sql = 'SELECT * FROM main WHERE Nombre="th6"';
$resultado = mysql_query($sql) or die ("No se pudo realizar la consulta");
?>
Con esto se hace la consulta
SELECT * FROM main WHERE Nombre="th6"', pero esto no significa que mostraremos el resultado.
Luego tenemos dos opciones, dos funciones PHP que hacen lo mismo pero de diferente forma:
-
mysql_fetch_row($resultado);-
mysql_fetch_array($resultado);mysql_fetch_row($resultado):$resultado es la variable usada con
mysql_query(); y esta funcion devuelve un array con inidices numericos, cada indice corresponde al valor de una columna en la fila o las filas seleccionadas por el query.
Ej:
<?php
include "configuracion.php";
$con = mysql_connect($myHost,$myUser,$myPass);
if (!$con) {
die ("no se pudo conectar al servidor MySQL");
}
$sel = mysql_select_db($myDb,$con);
if (!$sel) {
die("no se pudo seleccionar la base de datos");
}
$sql = 'SELECT * FROM main WHERE Nombre="th6"';
$resultado = mysql_query($sql) or die ("No se pudo realizar la consulta");
$row = mysql_fetch_row($resultado);
echo $row[0]; //muestra th6 (nombre)
echo $row[1]; //muestra th6@th6.com (email)
echo $row[2]; //muestra asdasdasd (password)
echo $row[3]; //error php,no existe el indice "3" en el array $row
?>
mysql_fetch_array($resultado):Esto es lo mas usado, ya que en vez de indices numericos, los indices son los mismos que las columnas en la tabla... ejemplo:
<?php
include "configuracion.php";
$con = mysql_connect($myHost,$myUser,$myPass);
if (!$con) {
die ("no se pudo conectar al servidor MySQL");
}
$sel = mysql_select_db($myDb,$con);
if (!$sel) {
die("no se pudo seleccionar la base de datos");
}
$sql = 'SELECT * FROM main WHERE Nombre="th6"';
$resultado = mysql_query($sql) or die ("No se pudo realizar la consulta");
$row = mysql_fetch_array($resultado);
echo $row['Nombre']; //muestra th6 (nombre)
echo $row['Email']; //muestra th6@th6.com (email)
echo $row['Password']; //muestra asdasdasd (password)
echo $row['asdasd']; //error php,no existe el indice "asdasd" en el array $row
?>
Debo aclarar, que estas funciones manipulan los resultados obtenidos por un query tipo SELECT, para manipular una query tipo INSERT o DELETE es mucho mas sencillo y no hay que usarlas...
<?php
include "configuracion.php";
$con = mysql_connect($myHost,$myUser,$myPass);
if (!$con) {
die ("no se pudo conectar al servidor MySQL");
}
$sel = mysql_select_db($myDb,$con);
if (!$sel) {
die("no se pudo seleccionar la base de datos");
}
$sql = 'INSERT INTO main(Nombre,Email,Password) WHERE values ("rosita","rosita@rosita.com","rosita123123")';
$resultado = mysql_query($sql) or die ("No se pudieron insertar los datos");
?>
Esto inserta una nueva fila con los valores:
Nombre: rosita
Email: rosita@rosita.com
Password: rosita123123
En caso de que no se pueda efectuar el query por X motivos...
$resultado = mysql_query($sql)
or die ("No se pudieron insertar los datos");Se "muere" todo el script (no continua) y muestra el mensaje "No se pudieron insertar los datos"
Luego les mostrare un ejemplo usando un formulario HTML para introducir datos en una base de datos ^^
Saludos.