Autor Tema: [CLASE] Consultas a MySQL  (Leído 1486 veces)

Desconectado WarezD@rK

  • PHPer@ Fijo
  • ***
  • Mensajes: 162
  • Karma: 8
  • Sexo: Masculino
  • Pasaba por aquí...
    • Ver Perfil
    • Ninguno
[CLASE] Consultas a MySQL
« en: 11 de Febrero de 2010, 15:04:20 pm »
He creado una clase para enviar consultas a una base de datos MySQL.

Su funcionamiento es muy sencillo y permite enviar varias consultas a la vez.
También he incluído tratamiento de errores.


1. Consulta simple:

Código: [Seleccionar]
<?php
require_once("mysqlClass.php");

$consulta = new mysqlQuery("SELECT nombre FROM tabla");
$consulta->send();
$filas $consulta->getRows();

if(
$filas)
{
    while(
$datos $consulta->getArray())
    {
        echo 
$datos[&#39;nombre&#39;]."\n";
    
}
}
?>

2. Consulta múltiple:

Código: [Seleccionar]
<?php
$consultas 
= new mysqlQuery(array("UPDATE tabla SET nombre = &#39;WarezD@rK&#39;",
                                                 
"UPDATE tabla SET apellidos = &#39;PHPeros&#39;",
                                                 
"UPDATE tabla SET edad = &#39;22&#39;",
                                                 
"UPDATE tabla SET pais= &#39;España&#39;",
                                                 
"UPDATE tabla SET ciudad = &#39;Barcelona&#39;"));
$consultas->send();
?>

La clase incluye control de errores, por lo que si queremos ver algún posible mensaje de error, debemos llamar a la siguiente función:

Código: [Seleccionar]
<?php
$consulta 
mysqlQuery("SELECT nombre FROM tabla_falsa");
$consulta->send();
$filas $consulta->getRows();
$consulta->showError();
?>

Por otro lado, si la consulta no devuelve ningún error, mostrará este mensaje: "Consulta realizada con éxito".

Aqui tenéis la clase:

Código: [Seleccionar]
<?php
class mysqlQuery
{
private $queries;
private $result;

// Creamos un constructor para obtener
// las consultas al crear el objeto.

function __construct($xQueries)
{
$this->queries $xQueries;
}

// Creamos una función para enviar
// las consultas. Comprueba el número
// de consultas a enviar al servidor.

public function send()
{
// Si la consulta es un Array.

if(is_array($this->queries))
{
// Por cada consulta, la enviamos
// individualmente al servidor.

foreach($this->queries as $query)
{
$this->result = @mysql_query($query);
}
}
else
{
// Si la consulta no es un Array,
// la enviamos entera y sin tratar.

$this->result = @mysql_query($this->queries);
}
}

// Creamos una función para
// obtener el número de filas.

public function getRows()
{
return @mysql_num_rows($this->result);
}

// Creamos una función para
// crear un Array con los resultados.

public function getArray()
{
return @mysql_fetch_array($this->result);
}

// Creamos una función para
// mostrar posibles errores.

public function showError()
{
// Almacenamos los posibles errores.

$mysqlError mysql_error();

// Si existe algún error, lo mostramos
// sino, mostramos un mensaje de éxito.

if($mysqlError)
{
echo "Error: ".$mysqlError;
}
else
{
echo "Consulta realizada con éxito.";
}
}
}
?>



Un saludo :)
Trabajando en mi actual proyecto.

Comunidad PHPeros

[CLASE] Consultas a MySQL
« en: 11 de Febrero de 2010, 15:04:20 pm »

Desconectado Warlox

  • Moderadores PHP
  • PHPero Master
  • ****
  • Mensajes: 1.278
  • Karma: 77
  • Sexo: Masculino
  • A veces hay que aprender a correr antes de caminar
    • Ver Perfil
    • Página personal
Re:[CLASE] Consultas a MySQL
« Respuesta #1 en: 11 de Febrero de 2010, 17:56:01 pm »
Está buena, pero la verdad no le veo mucha utilidad que digamos :S
Para hacer todo eso, es lo mismo poner en un archivo:

Código: [Seleccionar]
<?php
mysql_query
("UPDATE..."); //UPDATE 1
mysql_query("UPDATE..."); //UPDATE 2
mysql_query("UPDATE..."); //UPDATE 3
mysql_query("UPDATE..."); //UPDATE 4
?>

Y pues así y ya, si quieres mostrar error, or die...
xD
- Moderador de PHP


Desconectado WarezD@rK

  • PHPer@ Fijo
  • ***
  • Mensajes: 162
  • Karma: 8
  • Sexo: Masculino
  • Pasaba por aquí...
    • Ver Perfil
    • Ninguno
Re:[CLASE] Consultas a MySQL
« Respuesta #2 en: 11 de Febrero de 2010, 19:35:08 pm »
Está buena, pero la verdad no le veo mucha utilidad que digamos :S
Para hacer todo eso, es lo mismo poner en un archivo:

Código: [Seleccionar]
<?php
mysql_query
("UPDATE..."); //UPDATE 1
mysql_query("UPDATE..."); //UPDATE 2
mysql_query("UPDATE..."); //UPDATE 3
mysql_query("UPDATE..."); //UPDATE 4
?>

Y pues así y ya, si quieres mostrar error, or die...
xD

Entonces el título [CLASE] no tendría sentido. Tú programa como quieras, yo solo postearé clases. Además, deberás hacer un "or die" para cada consulta.
Esta clase está pensada para escribir el menor código posible al realizar un algoritmo con muchas consultas.

Si necesitas enviar por ejemplo 50 UPDATES, es mucho más cómodo enviar un array de consultas y recibir el error, que escribir 50 veces "or die("Error: ".mysql_error())".

También se puede extender la clase y con un mismo objeto enviar consultas a base de datos distintas; MySQL, SQL, etc...
Trabajando en mi actual proyecto.

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:[CLASE] Consultas a MySQL
« Respuesta #3 en: 11 de Febrero de 2010, 20:38:36 pm »
Es verdad que el ahorro de código es mucho, pero rara vez se hacen 50 queries, aunque tal vez las haga algún día, jeje

Desconectado javipilo

  • PHPero Experto
  • *****
  • Mensajes: 975
  • Karma: 31
  • Sexo: Masculino
    • Ver Perfil
Re:[CLASE] Consultas a MySQL
« Respuesta #4 en: 11 de Febrero de 2010, 21:16:53 pm »
Estas queries tienen un problema, las sessiones o coockies

Desconectado WarezD@rK

  • PHPer@ Fijo
  • ***
  • Mensajes: 162
  • Karma: 8
  • Sexo: Masculino
  • Pasaba por aquí...
    • Ver Perfil
    • Ninguno
Re:[CLASE] Consultas a MySQL
« Respuesta #5 en: 11 de Febrero de 2010, 22:55:37 pm »
Estas queries tienen un problema, las sessiones o coockies

Explícate mejor porque me he quedado igual.
Trabajando en mi actual proyecto.

Desconectado x.mara.x

  • PHPero Master
  • ******
  • Mensajes: 1.364
  • Karma: 57
  • Sexo: Femenino
    • Ver Perfil
Re:[CLASE] Consultas a MySQL
« Respuesta #6 en: 18 de Febrero de 2010, 14:30:47 pm »
Tengo que esperar dos horas para poder darte otro karma esta muy bueno! Lo he entendido casi perfectamente :) creo que lo aplicare clases a mis codigos.
Ahora, tengo una peticion xD (si no es de mucha molestia) pero ya que tus tutos de clases son tan buenos, porque no propones un ejercicio o dos para aplicar las clases? Porque no se me ocurre de codigos pequeños de hacer.. xD

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:[CLASE] Consultas a MySQL
« Respuesta #7 en: 18 de Febrero de 2010, 19:28:03 pm »
Yo hize un clase de paginación, luego la publico.
Mixtiqueros.net

<?PHP
define
(_miNombre, &#39;Focux&#39;);
if(_miNombre == &#39;Focux&#39;): printf(&#39;%s es un programador avanzado&#39;, _miNombre); else: printf(&#39;Tu no eres %s&#39;, _miNombre); endif;
?>

Desconectado WarezD@rK

  • PHPer@ Fijo
  • ***
  • Mensajes: 162
  • Karma: 8
  • Sexo: Masculino
  • Pasaba por aquí...
    • Ver Perfil
    • Ninguno
Re:[CLASE] Consultas a MySQL
« Respuesta #8 en: 19 de Febrero de 2010, 00:56:18 am »
Tengo que esperar dos horas para poder darte otro karma esta muy bueno! Lo he entendido casi perfectamente :) creo que lo aplicare clases a mis codigos.
Ahora, tengo una peticion xD (si no es de mucha molestia) pero ya que tus tutos de clases son tan buenos, porque no propones un ejercicio o dos para aplicar las clases? Porque no se me ocurre de codigos pequeños de hacer.. xD

He publicado un reto sobre clases, por si te interesa: http://www.phperos.net/foro/index.php/topic,5182.new.html
Trabajando en mi actual proyecto.

Desconectado x.mara.x

  • PHPero Master
  • ******
  • Mensajes: 1.364
  • Karma: 57
  • Sexo: Femenino
    • Ver Perfil
Re:[CLASE] Consultas a MySQL
« Respuesta #9 en: 19 de Febrero de 2010, 12:15:05 pm »
Gracias, eso ya estaba? No lo vi, perdona.

Desconectado WarezD@rK

  • PHPer@ Fijo
  • ***
  • Mensajes: 162
  • Karma: 8
  • Sexo: Masculino
  • Pasaba por aquí...
    • Ver Perfil
    • Ninguno
Re:[CLASE] Consultas a MySQL
« Respuesta #10 en: 19 de Febrero de 2010, 14:23:59 pm »
Gracias, eso ya estaba? No lo vi, perdona.

No, no estaba, lo he publicado a raíz de tu post, por eso te he avisado.
Trabajando en mi actual proyecto.

Desconectado x.mara.x

  • PHPero Master
  • ******
  • Mensajes: 1.364
  • Karma: 57
  • Sexo: Femenino
    • Ver Perfil
Re:[CLASE] Consultas a MySQL
« Respuesta #11 en: 19 de Febrero de 2010, 14:46:27 pm »
No, no estaba, lo he publicado a raíz de tu post, por eso te he avisado.
Ah, ok, gracias por poner ese reto. De todas manera de vuelta al tema:
cuando se debe utilizar $this-> y cuando no? Creo que lo entendi mas o menos pero una explicacion explicita no haria daño

Desconectado WarezD@rK

  • PHPer@ Fijo
  • ***
  • Mensajes: 162
  • Karma: 8
  • Sexo: Masculino
  • Pasaba por aquí...
    • Ver Perfil
    • Ninguno
Re:[CLASE] Consultas a MySQL
« Respuesta #12 en: 19 de Febrero de 2010, 14:56:07 pm »
Ah, ok, gracias por poner ese reto. De todas manera de vuelta al tema:
cuando se debe utilizar $this-> y cuando no? Creo que lo entendi mas o menos pero una explicacion explicita no haria daño

En el tutorial lo explico.

$this->variable se utiliza siempre para leer o modificar las variables de la clase, las que pones al principio (var variable o private variable).

Si declaras "var $miVariable" o "private $miVariable", para trabajar con ella debes utilizar $this->miVariable, ya que te estás refiriendo a la variable de esa clase. This en inglés es este/a.

Digamos que son las variables "globales" de la clase. Por ejemplo, en Visual Basic en vez de $this-> se utiliza Me (Me.miVariable).
Trabajando en mi actual proyecto.

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:[CLASE] Consultas a MySQL
« Respuesta #13 en: 19 de Febrero de 2010, 19:14:23 pm »
En el tutorial lo explico.

$this->variable se utiliza siempre para leer o modificar las variables de la clase, las que pones al principio (var variable o private variable).

Si declaras "var $miVariable" o "private $miVariable", para trabajar con ella debes utilizar $this->miVariable, ya que te estás refiriendo a la variable de esa clase. This en inglés es este/a.

Digamos que son las variables "globales" de la clase. Por ejemplo, en Visual Basic en vez de $this-> se utiliza Me (Me.miVariable).
Entonces sería correcto...?:

class Miclase {
var 
$saludo = &#39;hola&#39;;
function saludar() {
echo 
$this->saludo;
function 
despedirse() {
$despedida = &#39;adios&#39;;
echo $despedida;
}
}

Es muy chorra, pero no se me ocurría otro ejemplo

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:[CLASE] Consultas a MySQL
« Respuesta #14 en: 19 de Febrero de 2010, 19:26:48 pm »
En el tutorial lo explico.

$this->variable se utiliza siempre para leer o modificar las variables de la clase, las que pones al principio (var variable o private variable).

Si declaras "var $miVariable" o "private $miVariable", para trabajar con ella debes utilizar $this->miVariable, ya que te estás refiriendo a la variable de esa clase. This en inglés es este/a.

Digamos que son las variables "globales" de la clase. Por ejemplo, en Visual Basic en vez de $this-> se utiliza Me (Me.miVariable).
Muy buena explicación, aunque ya la sabía pero para los que no saben está excelente.  Esto de las classes me ha gustado mucho, estoy progamando muchos script para prácticar, el ultimo que hize fue un sistema de paginación, luego lo publico.
Mixtiqueros.net

<?PHP
define
(_miNombre, &#39;Focux&#39;);
if(_miNombre == &#39;Focux&#39;): printf(&#39;%s es un programador avanzado&#39;, _miNombre); else: printf(&#39;Tu no eres %s&#39;, _miNombre); endif;
?>