domingo, 14 de febrero de 2016

Mysqli

Conexión con MySQLi utilizando Herencias (PRINICK)

PHP: mysqli idesweb ua

10 Mysqli Insert  (todos los videos orientados a objeto)

Curso de PHP Estructurado y MySQLi

memoria de un aprendiz (mysqli) OJO BUENO




Conexión/desconexión al servidor de bases de datos MySQL
$objeto= new mysqli ( servidor, usuario, contraseña )
$objeto->close()   à  cierre de conexión
EJEMPLO
/* Programación orientada a objetos */ 
if($c = new mysqli($cfg_servidor,$cfg_usuario,$cfg_password)){ 
    print 
"<br>La conexión con  el servidor de bases de datos utilizando objetos se ha realizado<br>"; 
}else{ 
    print 
"<br>No ha podido realizarse la conexión mediante objetos<br>"; 
} 
if(
$c->close()){ 
    print 
"<br>Se ha cerrado la conexión, utilizando objetos, con el servidor de bases de datos<BR>"; 
} 

Gestión de errores de conexión
mysqli_connect_errno() à  El código de error
mysqli_connect_error()  à se objetiene la descripción de ese error 
EJEMPLO
<?php 
/* incluimos los datos de conexión al servidor MySQL */ 
include("mysqli.inc.php"); 

/* Programación orientada a objetos */ 
$c 
=@new mysqli($cfg_servidor,$cfg_usuario,'pepi'); 
        if(!
$c->connect_errno){ 
            print 
"<br>La conexión con  el servidor de bases de datos utilizando objetos se ha realizado<br>"; 
        }else{ 
            print 
"<br>No ha podido realizarse la conexión mediante objetos<br>";
            print 
"<i>Error de conexión número:</i> "$c->connect_errno." <i>equivalente a:</i> ".$c->connect_error; 
            exit(); 
} 
if(
$c->close()){ 
    print 
"<br>Se ha cerrado la conexión, utilizando objetos, con el servidor de bases de datos<BR>"; 
} 
?>
Salida en Pantalla.   
No ha podido realizarse la conexión mediante objetos
Error de conexión número: 1045 equivalente a: Access denied for user 'rinconas_xuacu'@'localhost' (using password: YES)


Creación de bases de datos
$sentencia=CREATE DATABASE nombre_de_la_base
$objeto->query($sentencia)

o también 

$sentencia=CREATE DATABASE IF NOT EXISTS nombre_de_la_base
$objeto->query($sentencia)
en este último supuesto evitaríamos la generación de errores como consecuencia de intentar crear ya base de datos preexistente.
Borrar bases de datos MySQL
$sentencia=DROP DATABASE nombre_de_la_base
$objeto->query($sentencia)

o también 

$sentencia=DROP DATABASE IF EXISTS nombre_de_la_base
$objeto->query($sentencia)
Creación de tablas
 Para la creación de una tabla se necesitan los siguientes requisitos:
§     – Tener abierta una conexión con el servidor MySQL.
$conexion = mysqli_connect ( servidor, usuario, contraseña )
§     – Tener seleccionada una base de datos.
es preciso decir a MySQL con qué base queremos trabajar.
mysqli_select_db(nombre_base_datos, $conexion)
Este proceso puede simplicarse incluyendo el nombre de la base de datos como cuarto parámetro
$objeto = new mysqli ( servidor, usuario, contraseña, nombre_base_datos)
Creación de una tabla
$objeto->query( $sentencia)
Las variables aludidas como $sentencia en los párrafos anteriores ha de contener una de estas cadenas:
CREATE TABLE IF NOT EXISTS tabla (campo1, campo2,... ) Type=tipo
o
CREATE TABLE tabla (campo1, campo2,... )) Type=tipo  
tipo puede ser MyISAM o InnoDB según el tipo de tabla que queramos crear.



Manipulación de tablas
Borrar tablas
Las sentencias MySQL que permiten borrar una tabla son las siguientes:
DROP TABLE IF EXISTS from nombre_de_la_tabla
o
DROP TABLE from nombre_de_la_tabla
Borrar uno de los campos de una tabla
La sentencia MySQL que permite borrar uno de los campos de una tabla es la siguiente:
ALTER TABLE nombre_de_la_tabla DROP nombre_del_campo

Añadir un nuevo campo a una tabla
Las sentencia MySQL que permite añadir un nuevo campo a una tabla es la siguiente:
ALTER TABLE nombre_de_la_tabla ADD nombre del campo tipo [flags]
EJEMPLO
<?php 
# incluimos una variable con el nombre de la tabla 
$tabla="ejemplo1"; 
$campo
="num3"; 
# incluimos los datos de la conexión y la base de datos para 
include(
"mysqli.inc.php"); 

# escribimos la sentencia MySQL 
$sentencia
="ALTER TABLE ".$tabla." ADD ".$campo" TINYINT(7)"; 

# establecemos la conexión con el servidor y seleccionamos la base de datos 
$objeto
=new mysqli($cfg_servidor,$cfg_usuario,$cfg_password,$cfg_basephp1); 

if(
$objeto->query($sentencia)){ 
            print 
"El campo ".$campo." ha sido AGREGADO A la tabla ".$tabla; 
    }else{ 
               print 
"<br>El campo ".$campo." no ha podido ser AGREGADO (mediante objetos) a la tabla ".$tabla."<br>"; 
            print 
"Error : "$objeto->error; 
            exit(); 
} 

    
$objeto->close(); 
?>
 




Añadir registros a una tabla
La sentencia MySQL que permite añadir registros a una tabla es la siguiente:
INSERT tabla (campo1,campo2,..) VALUES (valor1,valor2,..)
EJEMPLO
<?php 
# escribimos la sentencia MySQL 
$sentencia="INSERT INTO ".$tabla." (DNI,Nombre,Apellido1,Apellido2, Nacimiento,Sexo,Hora,Fumador,Idiomas) VALUES ('1234','Lupicinio','Servidor','Servido','1954-11-23','M','16:24:52',NULL,3)"; 


# establecemos la conexión con el servidor y seleccionamos la base de datos 
$objeto
=new mysqli($cfg_servidor,$cfg_usuario,$cfg_password,$cfg_basephp1); 

if(
$objeto->query($sentencia)){ 
            print 
"El registro ha sido añadido"; 
    }else{ 
               print 
"<br>No se ha añadido un registro a la tabla mediante objetos<br>"; 
            print 
"Error : "$objeto->error; 
            exit(); 
    } 

    
$objeto->close(); 
?>
Añadir un registro a partir de datos contenidos en variables
# escribimos la sentencia MySQL 
$v1="2876545"; 
$v2
="Gonzalo"; 
$v3
="Fernández"; 
$v4
="del Campo"; 
$v5
="1957/11/21"; 
$v6
="M"; 
$v7
=date("h:i:s"); 
$v8
="NULL"; 
$v9
=7; 


$sentencia
="INSERT INTO ".$tabla." (DNI,Nombre,Apellido1,Apellido2, Nacimiento,Sexo,Hora,Fumador,Idiomas) VALUES ('$v1','$v2','$v3','$v4','$v5','$v6','$v7',$v8,$v9)";


# establecemos la conexión con el servidor y seleccionamos la base de datos 
$objeto
=new mysqli($cfg_servidor,$cfg_usuario,$cfg_password,$cfg_basephp1); 

if(
$objeto->query($sentencia)){ 
            print 
"El registro ha sido añadido"; 
    }else{ 
               print 
"<br>No se ha añadido un registro a la tabla mediante objetos<br>"; 
            print 
"Error : "$objeto->error; 
            exit(); 
    } 

    
$objeto->close();
Número de resgistros afectados por una sentencia
$objeto->affected_rows  à cuyo valor es número de registros afectados por la última ejecución del método $objeto->query(). En los ejemplos siguientes hay ejemplos de utilización de este cuantificador.

Inyección de código

$objeto->real_escape_string(cadenaPara evitar la posibilidad de ese efecto indeseado (inyección de código) 

¡Cuidado!  

El uso de la función mysqli_real_escape_string() requiere como parámetro un identificador de conexión. Por lo tanto es imprescindible que antes de utilizarla se haya establecido una conexión con el servidor MySQL.
De igual manera, cuando se trata de programación orientada a objetos, real_escape_string() es un método y en consecuencia es requisito inprescindible la preexistencia del objeto antes de su utilización.

EJEMPLO
/******    Programación orientada a objetos ***********/ 
#conexion  y seleccion de base de datos 
$objetoMySQLi=@new mysqli ($cfg_servidor,$cfg_usuario,$cfg_password,$cfg_basephp1); 

/* esta es la sentencia MySQL */ 
$nombre
=$objetoMySQLi->real_escape_string("' or '34=34"); 
$sentenciaMYSQL
="SELECT Nombre, Apellido1, Apellido2 FROM $tabla WHERE (Nombre='$nombre') "; 

# realiza la consulta 
if(
$resultado=$objetoMySQLi->query($sentenciaMYSQL)){ 
  
# comprueba si ha habido resultados, caso de no haberlos produce un mensaja de aviso 
 
if($objetoMySQLi->affected_rows>0){ 
          print 
"La consulta ha producido ".$objetoMySQLi->affected_rows." resultados<br /><br />"; 

    
# CREAMOS UNA CABECERA DE UNA TABLA (codigo HTML) 
        
echo "<table align=center border=2>"; 

        
# establecemos un bucle que recoge en un array cada una de las LINEAS DEL RESULTADO DE LA CONSULTA 
        # utilizamos en esta ocasión «mysqli_fetch_row» en vez de «mysql_fetch_array» para EVITAR DUPLICADOS 
        # recuerda que esta ultima función devuelve un array escalar y otro asociativo con los resultados 

        
while ($registro mysqli_fetch_row($resultado)){ 
                    
# insertamos un salto de línea en la tabla HTML 
                    
echo "<tr>"; 

                    
# establecemos el bucle de lectura del ARRAY   con los resultados de cada LINEA 
                    # y encerramos cada valor en etiquetas <td></td> para que aparezcan en celdas distintas de la tabla 
                    
foreach($registro  as $clave){ 
                            echo 
"<td>",$clave,"</td>";                     } 
        } 
        echo 
"</table>"; 
 }else{ 
        
# mensaje de aviso para el caso de que la consulta no devuelva ningún resultado 
        
print "La consulta no ha producido ningún resultado"; 
        exit; 
 } 
}else{ 
    print 
"<br>No ha podido realizarse la consulta. Ha habido un error<br>"; 
    print 
"<i>Error:</i> "$objetoMySQLi->error"<i>Código:</i> "$objetoMySQLi->errno; 
    exit(); 
} 
$objetoMySQLi
->close(); 




No hay comentarios.:

Publicar un comentario