Foros del Web » Programando para Internet » PHP »

Metodo en clase php para evitar datos duplicados

Estas en el tema de Metodo en clase php para evitar datos duplicados en el foro de PHP en Foros del Web. Buenas a todos! He estado trabajando en una clase de php usando mysqli para poder acceder a una base de datos. Investigando encontré una bastante ...
  #1 (permalink)  
Antiguo 16/09/2013, 18:55
Avatar de fegm_4  
Fecha de Ingreso: febrero-2013
Mensajes: 114
Antigüedad: 11 años, 1 mes
Puntos: 8
Metodo en clase php para evitar datos duplicados

Buenas a todos!

He estado trabajando en una clase de php usando mysqli para poder acceder a una base de datos. Investigando encontré una bastante completa que me permite hacer consultas e inserciones. El problema radica en que cuando hago la inserción, no se como puedo hacer para que esta me verifique si el registro que introduje anteriormente ya existe.

La clase es la siguiente:

Código PHP:
Ver original
  1. class DBConnector {
  2.       protected static $conn;
  3.       protected static $stmt;
  4.       protected static $reflection;
  5.       protected static $sql;
  6.       protected static $data;
  7.       public static $results;
  8.       protected static function conectar() {
  9.           self::$conn = new mysqli(DBserver, DBuser, DBpassword, DBname);
  10. }
  11.       protected static function preparar() {
  12.           self::$stmt = self::$conn->prepare(self::$sql);
  13.           self::$reflection = new ReflectionClass('mysqli_stmt');
  14.       }
  15.       protected static function set_params() {
  16.           $method = self::$reflection->getMethod('bind_param');
  17.           $method->invokeArgs(self::$stmt, self::$data);
  18. }
  19.       protected static function get_data($fields) {
  20.           $method = self::$reflection->getMethod('bind_result');
  21.           $method->invokeArgs(self::$stmt, $fields);
  22.           while(self::$stmt->fetch()) {
  23.               self::$results[] = unserialize(serialize($fields));
  24.         }
  25. }
  26.       protected static function finalizar() {
  27.           self::$stmt->close();
  28.           self::$conn->close();
  29. }
  30.       public static function ejecutar($sql, $data, $fields=False) {
  31.           self::$sql = $sql;
  32.           self::$data = $data;
  33.           self::conectar();
  34.           self::preparar();
  35.           self::set_params();
  36.           self::$stmt->execute();
  37.           if($fields) {
  38.               self::get_data($fields);
  39.           } else {
  40.               if(strpos(self::$sql, strtoupper('INSERT')) === 0) {
  41.                   return self::$stmt->insert_id;
  42. } }
  43.           self::finalizar();
  44.       }
  45. }

Y en el archivo de prueba tengo el siguiente comando:
Código PHP:
Ver original
  1. $nickname = 'ppepe';
  2. $password = md5('pepe123');
  3. $name = 'Pedro Perez';
  4. $email = '[email protected]';
  5. $permissions = 0;
  6.  
  7. $sql = "INSERT INTO user
  8.          (nickname, password, name, email, permissions)
  9.          VALUES (?, ?, ?, ?,?)";
  10.   $data = array("ssssi",
  11.                 "{$nickname}", "{$password}", "{$name}", "{$email}","{$permissions}");
  12.   $insert_id = DBConnector::ejecutar($sql, $data);
  13.  
  14. echo $insert_id;

La cosa es que quiero que la comprobación sea en la clase y no fuera en el archivo.

Agradezco quien pueda ayudarme
__________________
--
Aqui fegm_4
  #2 (permalink)  
Antiguo 16/09/2013, 21:27
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Metodo en clase php para evitar datos duplicados

Te recomiendo que si quieres trabajar con clases para eso uses PDO. De ahi, la extiendes y haces lo que quieras.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 17/09/2013, 08:57
Avatar de fegm_4  
Fecha de Ingreso: febrero-2013
Mensajes: 114
Antigüedad: 11 años, 1 mes
Puntos: 8
Respuesta: Metodo en clase php para evitar datos duplicados

Gracias por tu mensaje, me podrías explicar cómo podría hacerlo? Soy nuevo en el tema, disculpa la molestia.
__________________
--
Aqui fegm_4
  #4 (permalink)  
Antiguo 17/09/2013, 09:03
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: Metodo en clase php para evitar datos duplicados

te presento el manual http://www.php.net/manual/es/book.pdo.php
  #5 (permalink)  
Antiguo 17/09/2013, 09:42
Avatar de fegm_4  
Fecha de Ingreso: febrero-2013
Mensajes: 114
Antigüedad: 11 años, 1 mes
Puntos: 8
Respuesta: Metodo en clase php para evitar datos duplicados

Cita:
Iniciado por rodrigo791 Ver Mensaje
Gracias! Ya nos habíamos conocido
__________________
--
Aqui fegm_4

Etiquetas: clase, duplicados, metodo, mysql, registro, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:00.