Daniel Segovia

Blog personal

Archive for julio, 2011

Enviar una consulta con mysqli

Hacer un comentario

Para enviar una consulta tenemos el método query, el mismo lo tendremos disponible luego de instanciar la clase

<?php 
$mysqli = new mysqli('localhost', 'usuario', 'contrasena', 'test');
 
/* Testeamos que se haya conectado correctamente */
if (mysqli_connect_errno()) {
    echo "Error en la conexión: " . mysqli_connect_error();
    die();
}
 
$sql = "SELECT * FROM usuarios";
if(!$result = $mysqli->query($sql)){
    die("Query invalido: " . $sql);
}
 
echo "Todo correcto";
$mysqli->close();
?>

Written by Daniel Segovia

julio 19th, 2011 at 12:07 pm

Seleccionar base de datos con mysqli

Hacer un comentario

La clase mysqli nos proporciona el método select_db, luego de abrir la conexión usaremos este método para seleccionar la base con la que trabajaremos posteriormente.

Usaremos la manera abreviada para conectarnos, osea desde el constructor.

<?php 
$mysqli = new mysqli('localhost', 'root', '');
 
/* Testeamos que se haya conectado correctamente */
if (mysqli_connect_errno()) {
    echo "Error en la conexión: " . mysqli_connect_error();
    die();
}
 
if(!$mysqli->select_db("test")){
    echo "Imposible seleccionar la base de datos: " . mysqli_connect_error();
    die();
}
$mysqli->close();
?>

Por otro lado, otra forma de seleccionar la base de datos es desde el constructor con el cuarto parámetro. Esta es la manera más común de generar la conexión y seleccionar la base de datos, de aquí en adelante usaremos esta manera para realizar las conexiones.

<?php 
$mysqli = new mysqli('localhost', 'usuario', 'contrasena', 'test');
 
/* Testeamos que se haya conectado correctamente */
if (mysqli_connect_errno()) {
    echo "Error en la conexión: " . mysqli_connect_error();
    die();
}
echo "Conectado ...";
$mysqli->close();
?>

Written by Daniel Segovia

julio 12th, 2011 at 12:34 pm

Conexión con mysqli

Hacer un comentario

Para abrir una conexión poseemos el método real_connect dentro de la clase mysqli
Primero instanciamos la clase para obtener el objeto que nos proporcionará el método para conectarnos.

<?php
$db = new mysqli;
if (!$db->real_connect('localhost', 'usuario', 'contrasena')) {
    echo "Error en la conexión: " . mysqli_connect_error();
    die();
}
echo "Conectado";
$mysqli->close();
?>

Por otro lado, mysqli, no proporciona la posibilidad de conectarnos al servidor MySQL desde el constructor de la clase, los 3 primeros parametros son host, usuario y contraseña.

<?php 
$mysqli = new mysqli('localhost', 'usuario', 'contrasena');
 
/* Testeamos que se haya conectado correctamente */
if (mysqli_connect_errno()) {
    echo "Error en la conexión: " . mysqli_connect_error();
    die();
}
echo "Conectado";
$mysqli->close();
?>

Written by Daniel Segovia

julio 11th, 2011 at 1:49 pm

Posted in 5.3.1 Conexión

PHP y MySQLi

Hacer un comentario

La extensión mysqli permite acceder a la funcionalidad proporcionada por MySQL 4.1 y superior, para contar con esta funcionalidad debe compilar PHP con soporte para mysqli.
Ésta extensión viene incluida en PHP 5 y versiones posteriores.

Ventajas de mysqli sobre la extensión mysql

  • Interfaz orientada a objetos
  • Soporte para Declaraciones Preparadas
  • Soporte para Múltiples Declaraciones
  • Soporte para Transacciones
  • Mejoradas las opciones de depuración
  • Soporte para servidor empotrado

El manual de PHP recomienda encarecidamente usar esta extensión si están trabajando con MySQL versión 4.1.3 o superior.
La extensión mysqli está desarrollada mediante el framework de extensiones de PHP. Su código fuente se ubica en el directorio ext/mysqli.

Written by Daniel Segovia

julio 8th, 2011 at 1:36 pm

Posted in 5.3 PHP y MySQLi

Tagged with , ,

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