Clase para la conexion a bases de datos MySQL
Diario de cambios:
Version: 0.3
Ultima edicion: 6-julio-2007
- arreglado un problema en la funcion enmarcar, siempre muestra el mensaje $str
- he añadido los constructores para que sea compatible con PHP 5
Hoy he terminado de desarrollar dos classes en PHP
- para conectar con una base de datos MySQL
- para hacer llamadas a la base de datos (querys, updates, deletes, inserts, etc.)
Caracteristicas importantes:
- al hacer selects, si estas devuelven valores, se tiene que hacer mysql_free_result($mysql_result) para liberar recursos, esta clase lo hace automaticamente
- cuando haces una query esta devuelve una tabla de objetos
puedes acceder a los valores mediante $query1->v[0]->nombre o recorrerlos todos con un foreach
con lo que ya no tienes que dudar si era un mysql_fetch_row, mysql_fetch_assoc u otro...
- modo de depuracion, si estas en modo de depuracion si se producen errores, se mostraran las querys tal y como se han ejecutado a la base de datos
- muy facil de recordar y programar, ya que se tiene que escribir muy poco
- Cierra la conexion datos automaticamente al final de la aplicacion, utilizando un __destructor() compatible con PHP4 y 5
Ejemplo practico:
-
//incluimos la clase
-
require 'class_mysql.php';
-
-
//creamos el objeto bd para poder conectar con la base de datos
-
//Nota: para el modo debug se tiene que escribir: $bd = new bd(1);
-
$bd = new bd();
-
-
//para hacer una query
-
$query1 = new query('select id, nombre, apellidos from trabajadores',$bd);
-
-
//podemos comprobar si la query ha obtenido valores (no hace falta para mostrar datos)
-
if($query1->n){
-
-
//recorremos las filas y mostramos los resultados
-
foreach ($query1->v as $fila)
-
}else{
-
//si no hay valores se muestra un mensaje
-
echo 'no se encontraron resultados';
-
}
Otras caracteristicas:
- para evitar sql-injections, debes filtrar los datos de esta manera:
PHP:
-
$query1 = new query("select * from usuarios where nombre='".$bd->f($_POST['nombre'])."' and password='".$bd->f($_POST['password'])."'",$bd);
-
- saber numero de filas afectadas, al hacer por ejemplo un update:
PHP:
-
$query1 = new query("update trabajadores set salario='1000' where departamento='12'",$bd);
-
Pasos:
Recuerda: (antes de usar la clase tienes que editar las variables)
- var $usuari='root'; //nombre de usuario de la base de datos
- var $clau=''; //contraseña del usuario
- var $servidor='localhost'; //nombre del servidor, normalmente localhost
- var $nomBD=''; //nombre de la base de datos
Si te ha gustado, crees que se puede mejorar o si encuentras fallos, deja un comentario
diferencias entre include, require, include_once y require_once
en general las 4 funciones hacen lo mismo, importar en un documento php, funciones o variables de otros documentos escritos en php o html
esto resulta muy util y practico a la hora de dividir y organizar nuestro codigo
pongo un caso, imaginen una funcion que se ejecuta en 4 ficheros php, para poder utilizar la misma funcion esta tendria que estar escrita en cada uno de los ficheros
¿inconvenientes?
- si queremos modificar la funcion, tenemos que cambiar cada una de los ficheros donde este escrita
- tenemos mas trabajo y necesitamos mas tiempo a la hora de modificar cada uno de los ficheros
- mas dificil de mantener
- mas codigo
- mas espacio ocupado
solucion:
creamos un fichero llamado por ejemplo general.php con las funciones que necesitamos y añadimos un include a cada uno de los ficheros
luego para modificar la funcion solo tenemos que editar el fichero general.php
ejemplo de include:
fichero1.php
-
include 'fichero2.php';//$variable es igual a 10
fichero2.php
-
$variable = 10;
si ejecutamos el fichero1.php, mostrara por pantalla el valor de la variable $variable, 10
la diferencia entre require e include, es que si el fichero no existe:
- include mostrara un warning y continuara con la ejecucion
- require mostrara un fatal error y parara la ejecucion
ejemplo de include_once:
fichero1.php
-
include_once("fichero2.php"); //$variable es igual a 10
-
$variable = 20; //$variable es igual a 20
-
include_once("fichero2.php"); //$variable es igual a 20
fichero2.php
-
$variable = 10
si ejecutamos fichero1.php, mostrara por pantalla 20
¿porque 20 y no 10?
tanto include_once como require_once solo se pueden ejecutar una vez
la segunda vez que se llama a include_once, esta es como si no existiera.
si en vez de utilizar include_once, utilizamos include o require el valor final de $variable seria 10
include se comporta igual que include_once, a la hora de importar el fichero, si este no existe mostrara warning y continuara la ejecucion
lo mismo passa con require y require_once, si el fichero no existe muestra un fatal error y para la ejecucion
algunas anotaciones:
- vigila a la hora de hacer mas de un include con ficheros que contengan funciones
si importas un fichero que ya ha sido incluido antes o que contenga alguna funcion declarada anteriormente, aparacera un Fatal error y la ejecucion terminara, ya que no se puede declarar la misma funcion 2 veces - si quieres importar ficheros con solo variables, no tendras problemas para llamarlo mas de una vez (solo con include y require)
- utiliza require o require_once, para cargar archivos de configuracion, que contengan constantes
- puedes hacer un fichero php que contenga una plantilla html de un mensaje de foro y hacer un include a este fichero dentro de un while o for, ojo con include_once no lo puedes hacer
- si el fichero que quieres incluir esta escrito en php, este debe tener encima del codigo <?php y al final ?>, si es codigo html no hace falta
curiosidades de echo
- Utiliza la comilla simple (') en vez de la comilla doble (") siempre que no vayas a usar variables dentro, la comilla doble hace que el intérprete analice lo que hay dentro de las comillas.
- La forma más rápida de concatenar texto es usando comillas simples.
- Cuando uses echo, separa los strings por comas mejor que con puntos, es más rápido. Esto solo funciona con echo.
- echo es más rápido que print.
Sobre el segundo punto la verdad es que no lo sabia, Alejando Torres hizo un comentario en mi post sobre mis manias a la hora de programar
El tercero tambien me ha sorprendido he hice un ejemplo:
-
$var = 13;
El resultado de este codigo es:
los 13 monos voladores
Via | Sentido Web
mis manias al programar
- " - las comillas dobles las utilizo para PHP
- ' - las comillas simples para javascript
- los IF simples en una sola linea:
$var2 = ($var1==55) ? 10 : 3;
Nota: lo que hace el ejemplo de arriba es si $var1 es igual a 55 la variable $var2 se le asignara el valor 10 en caso contrario 3 - include "prueba.php"; sin los parentesis
- utilizar <?=$valor;?>, pero ya lo estoy intentado evitar y utilizar la forma correcta <?php echo $valor;?>, ya que leei por algun sitio que el <? corresponde al lenguaje xml
- para hacer 3 condiciones lo hago con if, else if, else
- si son mas de 3 condiciones utilizo el switch
- otra mania que me viene del c# y que hago en mis classes, es antes de cerrar el ultimo } es escribir las barras de comentarios //////////, asi me aseguro de que no borro el ultimo }
- evito el maximo poner la arroba delante de las funciones para que no muestre los errores, pero no lo niego a veces la cosa no funciona y nadie mira jeje
y tu que manias tienes a la hora de escribir codigo ? te parecen correctos mis habitos o tendria que cambiarlos ?
funciones interesantes en PHP
- nl2br("esto es una\nprueba");
sustituye los \n por <br/> - substr_count("esto es una prueba", "e");
cuenta el numero de repeticiones de la letra e en una caden el resultado 3 - flush()
si tenemos fors o whiles muy largos y queremos mostrar la info antes de que acabe de ejecutar la aplicacion, con esta funcion mostraremos lo que haya cargado - $tabla = file("fichero.txt");
devuelve el contenido de un fichero en una $tabla, cada espacio sera una fila de la tabla
Es curioso Gafeman, mi historia es muy parecida empece a los 11-12 años con un CD de una revista semidesconocida en la que venían programas para la creación de webs (aún tengo esa revista) uno de esos programas era Hot Dog, programa que nunca entendí.
Finalmente encontré Microsoft FrontPage con el que logré desarrollar webs de manera un poco más seria, siempre desde el entorno visual intentando tocar el menor código posible. Finalmente seguí con Dreamweaver y poco a poco he ido aprendiendo y mejorando, y aun me queda ;).
Me a gustado leer esta entrada. Saludos.