¡Vota por nosotros!

Vota diariamente por XatiyaRO para mejorar nuestra reputación y ayudarnos a crecer.

RagnaTOP - Top Ragnarok Online en Español Ragnarok private server
private server TOP RO Hispano

Autor Tema: [PHP][V] Trabajando con MySQL (Bases de datos)  (Leído 17751 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Th6

  • [Security Expert]
  • Novice
  • *
  • Mensajes: 6
  • Guild: Paranoia
  • Pj Principal: TheHacker666
[PHP][V] Trabajando con MySQL (Bases de datos)
« en: 12 de Junio de 2008, 22:12:38 pm »
Son necesarios:

- Conocimientos Previos de SQL
- Conocimientos previos de HTML
- Haber leido los capitulos anteriores de PHP publicados en esta seccion.



Consultas Sencillas

Las 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:

Código: [Seleccionar]
<?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...

Código: [Seleccionar]
<?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...

Código: [Seleccionar]
<?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...

Código: [Seleccionar]
<?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).

Código: [Seleccionar]
<?php
mysql_select_db
("db",identificador de conexion);
?>


Un ejemplo usando variables:

Archivo configuracion.php:
Código: [Seleccionar]
<?php
$myHost
="localhost";
$myUser="th6";
$myPass="th6123";
$myDb="foro";
?>


Archivo index.php:
Código: [Seleccionar]
<?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

Código: [Seleccionar]
<?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:
Código: [Seleccionar]
<?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:

Código: [Seleccionar]
<?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...

Código: [Seleccionar]
<?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.

balfer

Re: [PHP][V] Trabajando con MySQL (Bases de datos)
« Respuesta #1 en: 12 de Junio de 2008, 22:20:29 pm »
Bloqueado y pinned, dudas al post correspondiente