entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Evitar que un dato se repita dos veces

Hola buenas noches estoy tratando de hacer que no se repita un dato dos veces en un api y mi pregunta es que como hacer que no se repita el dato de CORREO y que mande una aleta de que ese correo ya esta registrado

function loginUsuarioU() {
    try {
        $request= \Slim\Slim::getInstance()->request();
        $datos = json_decode($request->getBody());
        $nom=$datos->nombre;
        $corre=$datos->correo;
        $cont=$datos->contrasena;
        $tip=$datos->tipo;
        $clave_cifrada=password_hash($cont, PASSWORD_DEFAULT, array("cost"=>15));
        $sql = "INSERT INTO usuarios (nombre, correo,contrasena, tipo) VALUES (:nom, :corre,  :cont, :tip)";
        $db = getDB();
        $stmt =$db->prepare($sql);
        $stmt->bindParam("nom", $nom);
        $stmt->bindParam("corre", $corre);
        $stmt->bindParam("cont", $clave_cifrada);
        $stmt->bindParam("tip", $tip);
        $stmt->execute();

            $id=$db->lastInsertid();
        $token= hash('sha256', $id);
            $sql= "UPDATE usuarios SET token=:token WHERE idus=:id";
            $stmt=$db->prepare($sql);
        $stmt->bindParam(":id", $id);
        $stmt->bindParam(":token", $token);
        $stmt->execute();

            $sql="SELECT * FROM usuarios WHERE idus=".$id;
            $stmt=$db->query($sql);
        $nombre=$stmt->fetchAll(PDO::FETCH_OBJ);
        $db=null;
        echo json_encode($nombre[0]);
    } catch(PDOException $e) {
        echo '{"error":{"text":'. $e->getMessage() .'}}';
    }
}

1 Respuesta

3votos

Th3Mik3s Puntos2950

Saludos

Lo más fácil es configurar tu base de datos, en la tabla que guardas la información, a la columna correo indica que es UNIQUE y con PHP captura el error que te enviará cuando el correo ya exista en la base de datos y presenta un mensaje de correo ya existente.

Ejemplo Base de Datos

CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    CONSTRAINT UC_Person UNIQUE (ID,LastName)
);

Éxito

0voto

Elyjn comentado

Pero mediante código

1voto

Th3Mik3s comentado

Primero haz una consulta a la base de datos

SELECT mail FROM usuarios WHERE correo LIKE :corre

Si no te regresa nada, entonces puedes proseguir, en caso de lo contrario manda un mensaje de correo duplicado.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta