Hola lo del tema de mysqli no lo ví bién .
A lo de escapara los caracteres me refiero a que uses funciones como :
Código PHP:
mysql_real_escape_string
Piensa que los inputs siempre són los puntos más calientes para que un visitante malintencionado altere el comportamiento de tus consultas .
Vamos a hacer un ejemplo sencillo :
Imagina que un usuario malintencionado tuviese un form e introdujera en el campo nombre :
Y en el campo pass :
Y le dieras al submit .. Lo que pasaría es que tu consulta quedaría :
Como hemos desactivado la condición , hemos añadido el op lógico OR y 1=1 siempre dará true .. el resultado sera que nos mostrara todos los nombre de usuario y contraseñas de la bd.
Esto es un ejemplo sencillo para que veas el concepto de algunas inyecciones de SQL .
Luego el ejemplo de herencia básico sería algo como :
Código PHP:
<?php
class BaseDatos
{
function __construct()
{
$conexion=mysqli_connect("localhost","Prueba","Pru eba")or die("ERROR, no se puede conectar a la base de datos: ".mysqli_error());
mysqli_select_db($conexion,"Prueba");
return $conexion;
}
}
Código PHP:
<?php
class Prueba extends BaseDatos
{
function __construct(){
parent::__construct();
}
function agregarNombre($Nombre)
{
$json['bandera']="";
mysqli_query($this->conexion,"BEGIN");
$sql="INSERT into Prueba(Nombre)values('".$Nombre."')";
$query=mysqli_query($this->conexion,$sql)or die("ERROR, no se pudo insertar en la base de datos: ".mysqli_error());
if($query==FALSE)
{
mysqli_query($this->conexion,"ROLLBACK");
$json['bandera']="0";
}
else
if($query!=FALSE)
{
mysqli_query($this->conexion,"COMMIT");
$json['bandera']="1";
}
echo json_encode($json);
}
}
?>
No lo he probado es teórico .
De esta forma cuando haces :
$objPrueba = new Prueba;
al inicializarse el consturctor de prueba llama al constructor de la clase conexión.
$objPrueba->agregarNombre(params);
La idea es cuando heredas usas la palabra reservada extends al declarar la clase .
Se heredan todos los atributos y métodos , recuerda atributo = var y método = funcion.
Los atributos public y protected se heredan mientras que private no. ( A esto se le llama encapsulación ).
Luego las constantes se definen con cons y las propiedades estáticas con la palabra reservada static .. y se acceden a ellas mediante nombreClasse::$mivarstatic ;
Recuerda también que poner una función con el mismo nombre de la clase es lo mismo que usar __construct().
El constructor es lo primero que se ejecuta nada mas instanciar una clase.
y con el operador de resolución parent:: estamos instanciando el constructor de la clase padre en la case hija .
Un saludo!