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>";
}
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>";
}
?>
/* 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)
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)
$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)
$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
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
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();
?>
# 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();
?>
$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();
$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(cadena) Para
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.
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();
#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