Daniel Segovia

Blog personal

Archive for the ‘5.2 PHP y MySQL’ Category

Insertar, modificar y eliminar

Un comentario

Veremos como realizar las acciones de agregar, editar y eliminar datos de la base de datos a la que estemos conectados.
Estás acciones son código SQL que posteriormente se ejecutará con mysql_query, este capítulo podría ser obviado ya que no veremos ninguna función nueva de PHP, pero considero importante saberlo ya que con estás 4 opciones (seleccionar, insertar, editar y eliminar) se nos abren un abanico de posibilidad a realizar.

Vamos a definir la tabla para trabajar con una estructura definida.

Tenemos una tabla llamada personas que posee los campos id, nombre y apellido
estructura tabla

<?php
//insertar.php
$identificador = mysql_connect('localhost', 'usuario', 'contrasena');
if (!$identificador) {
    die('No se pudo conectar : ' . mysql_error());
}
 
$db_seleccionada = mysql_select_db('nombre_base', $identificador);
if (!$db_seleccionada) {
    die ("Imposible usar  nombre_base " . mysql_error());
}
 
//Consulta
$sql = "INSERT INTO personas (nombre, apellido) VALUES ('Daniel', 'Segovia')";
$resultado = mysql_query($sql, $identificador);
if (!$resultado) {
    die('Query invalido: ' . mysql_error());
}
echo "Insercción exitosa";
?>

Actualización

<?php
//modificar.php
$identificador = mysql_connect('localhost', 'usuario', 'contrasena');
if (!$identificador) {
    die('No se pudo conectar : ' . mysql_error());
}
 
$db_seleccionada = mysql_select_db('nombre_base', $identificador);
if (!$db_seleccionada) {
    die ("Imposible usar  nombre_base " . mysql_error());
}
 
$sql = "UPDATE personas set nombre='Daniel'";
$resultado = mysql_query($sql, $identificador);
if (!$resultado) {
    die('Query invalido: ' . mysql_error());
}
 
/*Aquí en este ejemplo actualiza el campo nombre con el texto Daniel, pero nosotros
no estamos indicando que registro queremos actualizar, por lo que va a actualizar 
todos los nombres de la tabla personas, para evitar esto en SQL existe la 
clausula WHERE, donde especificaremos la condición que deseemos.*/
 
$sql = "UPDATE personas set nombre='Daniel' WHERE nombre='Dani'";
$resultado = mysql_query($sql, $identificador);
if (!$resultado) {
    die('Query invalido: ' . mysql_error());
}
/*De esta manera solamente actualizará los registros que contengan Dani*/
 
/*Si deseamos modificar un registro especifico podemos acceder a él por ID*/
$sql = "UPDATE personas set nombre='Daniel' WHERE id=30";
$resultado = mysql_query($sql, $identificador);
if (!$resultado) {
    die('Query invalido: ' . mysql_error());
}
/*Actualizaremos el nombre a Daniel en el registro id igual a 30 */
 
echo "Actualizaciones exitosas";
?>

Eliminación

<?php
//eliminar.php
$identificador = mysql_connect('localhost', 'usuario', 'contrasena');
if (!$identificador) {
    die('No se pudo conectar : ' . mysql_error());
}
 
$db_seleccionada = mysql_select_db('nombre_base', $identificador);
if (!$db_seleccionada) {
    die ("Imposible usar  nombre_base " . mysql_error());
}
 
$sql = "DELETE FROM personas WHERE id = 40";
$resultado = mysql_query($sql, $identificador);
if (!$resultado) {
    die('Query invalido: ' . mysql_error());
}
echo "Eliminación correcta";
?>

En este último ejemplo directamente eliminamos el registro con id igual a 40

Written by Daniel Segovia

julio 7th, 2011 at 7:18 pm

Recuperar múltiples filas

Hacer un comentario

Las funciones mysql_fetch_assoc y mysql_fetch_array nos crean un array de 1 fila, pero la consulta puede traernos muchas más filas. Para acceder fila por fila debemos ciclar el resource del query que realizamos, cuando las funciones nos devuelvan un false querrá decir que no quedan más filas por lo que concluiremos el ciclo.
Como es un ciclo condicional usaremos while

<?php
$link = mysql_connect('localhost', 'usuario', 'contrasena');
if (!$link) {
    die('No se pudo conectar: ' . mysql_error());
}
if (!mysql_select_db('base_nombre')) {
    die('No puede seleccionarse "base_nombre" con esta conexión : ' . mysql_error());
}
$result = mysql_query('SELECT nombre, apellido, direccion FROM estudiantes');
if (!$result) {
    die('Error al ejecutar el query:' . mysql_error());
}
while($row = mysql_fetch_assoc($result)){
    echo $row['nombre']  . " - " . $row['apellido']  . " - " . $row['direccion']  . "<br />";
}
?>

Written by Daniel Segovia

julio 4th, 2011 at 10:46 pm

Recuperar el contenido

Un comentario

Hasta ahora hemos visto como conectarnos, seleccionar y ejecutar un query en una base de datos MySQL.
Es hora de ejecutar un query y traer esa información para poder manipularla en PHP.
Existen varias funciones para este trabajo, veremos 3, mysql_result, mysql_fetch_array y mysql_fetch_assoc.

mysql_result recuperará en contenido de una celda.

<?php
$link = mysql_connect('localhost', 'usuario', 'contrasena');
if (!$link) {
    die('No se pudo conectar: ' . mysql_error());
}
if (!mysql_select_db('base_nombre')) {
    die('No puede seleccionarse "base_nombre" con esta conexión : ' . mysql_error());
}
$result = mysql_query('SELECT nombre FROM estudiantes');
if (!$result) {
    die('Error al ejecutar el query:' . mysql_error());
}
echo mysql_result($result, 1); // Imprimirá el segundo nombre de la tabla (el primero esta en la posición 0)
?>

mysql_fetch_array generará una array con índices numericos, empezando desde el 0, por cada campo que traiga la consulta

<?php
$link = mysql_connect('localhost', 'usuario', 'contrasena');
if (!$link) {
    die('No se pudo conectar: ' . mysql_error());
}
if (!mysql_select_db('base_nombre')) {
    die('No puede seleccionarse "base_nombre" con esta conexión : ' . mysql_error());
}
$result = mysql_query('SELECT nombre, apellido, direccion FROM estudiantes');
if (!$result) {
    die('Error al ejecutar el query:' . mysql_error());
}
$row = mysql_fetch_array($result);
echo $row[0]  . " - " . $row[1]  . " - " . $row[2]  . " - ";
?>

mysql_fetch_assoc generará una array con índices que serán iguales a los nombres de los campos en la base de datos

<?php
$link = mysql_connect('localhost', 'usuario', 'contrasena');
if (!$link) {
    die('No se pudo conectar: ' . mysql_error());
}
if (!mysql_select_db('base_nombre')) {
    die('No puede seleccionarse "base_nombre" con esta conexión : ' . mysql_error());
}
$result = mysql_query('SELECT nombre, apellido, direccion FROM estudiantes');
if (!$result) {
    die('Error al ejecutar el query:' . mysql_error());
}
$row = mysql_fetch_assoc($result);
echo $row['nombre']  . " - " . $row['apellido']  . " - " . $row['direccion']  . " - ";
?>

Written by Daniel Segovia

julio 4th, 2011 at 10:36 pm

Enviar una consulta a MySQL

Hacer un comentario

Para enviar un consulta a MySQL usaremos la función mysql_query
mysql_query acepta 2 parámetros, el primero es una cadena de texto con la consulta en lenguaje SQL y la consulta no debe terminar en punto y coma (;) ya que la función no acepta múltiples consultas
El segundo parámetro es el identificador de la conexión (igual que con mysql_select_db), si éste no se especifica usará el último abierto, sí no hay conexión alguna abierta ejecutará mysql_connect sin parámetros y sí la conexión no es exitosa devolverá un error del tipo E_WARNING.

Cuando la consulta ejecutada es correcta y no hay ningún problema de conexión la función devolverá un identificador, caso contrario devolverá un false

<?php
$identificador = mysql_connect('localhost', 'usuario', 'contrasena');
if (!$identificador) {
    die('No se pudo conectar : ' . mysql_error());
}
 
$db_seleccionada = mysql_select_db('nombre_base', $identificador);
if (!$db_seleccionada) {
    die ("Imposible usar  nombre_base " . mysql_error());
}
 
//Consulta invalida
$resultado = mysql_query('SELECT * FROM');
if (!$resultado) {
    die('Query invalido: ' . mysql_error());
}
?>

Aquí un ejemplo con una consulta SQL correcta

<?php
$identificador = mysql_connect('localhost', 'usuario', 'contrasena');
if (!$identificador) {
    die('No se pudo conectar : ' . mysql_error());
}
 
$db_seleccionada = mysql_select_db('nombre_base', $identificador);
if (!$db_seleccionada) {
    die ("Imposible usar  nombre_base " . mysql_error());
}
 
//Consulta invalida
$resultado = mysql_query('SELECT * FROM usuarios');
if (!$resultado) {
    die('Query invalido: ' . mysql_error());
}
?>

Written by Daniel Segovia

junio 14th, 2011 at 6:12 pm

Seleccionar base de datos

Un comentario

Podemos seleccionar una base de datos dentro del servidor MySQL con la función mysql_select_db
mysql_select_db establecerá la base de datos activa que estará asociada al identificador (mysql_connect). Si no se especifica un identificador para asociar la base de datos usará el último abierto.
Si la selección fue exitosa toda llamada posterior con mysql_query utilizará la base activa.

<?php
$host = "localhost";
$usuario = "miuser";
$contrasena = "micontrasena";
$base_de_datos = "base_nombre";
 
$identificador = mysql_connect($host, $usuario, $contrasena);
if (!$identificador) {
    die('No se pudo conectar : ' . mysql_error());
}
 
$db_seleccionada = mysql_select_db($base_de_datos, $identificador);
if (!$db_seleccionada) {
    die ("Imposible usar  $base_de_datos " . mysql_error());
}
?>

Written by Daniel Segovia

junio 13th, 2011 at 1:15 pm

Conectarse a MySQL

Hacer un comentario

Para conectarse a la base de datos MySQL necesitamos la información necesaria.
Donde esta la base de datos y las credenciales para acceder.
Ésta información es la que nos pide la función mysql_connect de PHP para abrir una conexión a la base de datos.

En caso de conectarse con éxito nos devolverá un identificar de enlace, caso contrario un false

<?php
$link =  mysql_connect('localhost', 'mysql_user', 'mysql_password'); //Abro la conexión
if (!$link) { //Pregunto si se pudo conectar correctamente
    die('No pudo conectarse: ' . mysql_error()); //Mato el script y muestro el mensaje de error de MySQL
}
mysql_close($link); // Cierro la conexión
?>

El primer parámetro es la dirección donde se encuentra el MySQL server, el segundo el usuario y el tercero la contraseña.
Existen 2 parámetros adicionales para mysql_connect

Cuarto parámetro new_link: Cuando se crea una conexión con mysql_connect la función devuelve un identificador, si se llama a mysql_connect con los mismos parámetros no realiza una nueva conexión, directamente devuelve el identificador. El cuarto parámetro modifica éste comportamiento, lo que hará es devolver un nuevo identificador.

El quinto parámetro es una constante que permite cambiar determinados aspectos de la conexión. Lea más en constantes de MySQL

Nota: En el primer parámetro puede encontrar direcciones similares a las siguientes
 
mysql_connect('localhost', 'user', 'pass');
mysql_connect('localhost:5050', 'user', 'pass'); //host:puerto
mysql_connect('example.com', 'user', 'pass');  //url
mysql_connect('example.com:4050', 'user', 'pass'); //url:host
mysql_connect(':/tmp/mysql', 'user', 'pass'); //omite localhost
mysql_connect('localhost:/tmp/mysql.sock', 'user', 'pass'); //omite localhost

Written by Daniel Segovia

junio 9th, 2011 at 1:36 pm

PHP y MySQL

Hacer un comentario

PHP y MySQL debe ser la combinación más usada en Internet.
PHP soporta conexión a MySQL desde la su base.
Aquí veremos como conectarnos a la base de datos, como ejecutar querys (insert, select, update y delete) y también como traer información para poder mostrarla.
Las funciones nativas que usaremos son:

mysql_connect
mysql_select_db
mysql_query
mysql_fetch_assoc
mysql_fetch_array

Written by Daniel Segovia

junio 9th, 2011 at 12:55 pm