Consulta a bd y dependiendo del dato obtenido saber si puedo o no realizar otra acción PHP [SOLUCIONADO]

Interacción Dinámica con Base de Datos en PHP

Cuando trabajamos con aplicaciones que gestionan información dinámica, es frecuente que necesitemos realizar interrogaciones a la base de datos (BD) para poder llevar a cabo ciertas operaciones en función de los datos recibidos. La habilidad de realizar estas consultas de manera efectiva y segura es crítica para el desarrollo de aplicaciones web robustas y confiables.

La combinación de PHP y MySQL, o cualquier otro sistema manejador de base de datos relacional como PostgreSQL o SQLite, nos ofrece un conjunto de herramientas para ejecutar acciones condicionales de acuerdo a las respuestas obtenidas en nuestras solicitudes a la base de datos.

Paso a Paso: Conexión y Consulta en PHP

Empezaremos por establecer una conexión con nuestra base de datos. Este es un paso crítico y el comienzo para cualquier operación que desemos realizar con la información almacenada.

<?php
$servername = "localhost";
$username = "usuario";
$password = "contraseña";
$dbname = "mi_base_de_datos";

// Crear conexión
$conn = new mysqli($servername, $username, $password, $dbname);

// Verificar conexión
if ($conn->connect_error) {
  die("La conexión ha fallado: " . $conn->connect_error);
}
echo "Conexión exitosa";
?>

Una vez establecida la conexión, el siguiente paso es realizar una consulta para obtener los datos necesarios que nos permitan decidir si podemos ejecutar un determinado bloque de código.

Implementación de Lógica Condicional según Resultados de la BD

Podemos implementar una función o un bloque de código que realice una consulta específica y, en función de los datos obtenidos, determinar si ejecutamos o no ciertas operaciones. A continuación, se presenta un ejemplo práctico donde aplicamos esta lógica:

<?php
// asumimos que $conn es la conexión a la base de datos
$query = "SELECT permiso FROM usuarios WHERE id = 1";
$result = $conn->query($query);

if ($result->num_rows > 0) {
    // obtener dato
    $row = $result->fetch_assoc();
    if ($row["permiso"] == "autorizado") {
        // ejecutar acción
        echo "Usted está autorizado para realizar esta acción";
        // ... Colocar aquí el código adicional que se ejecutará ...
    } else {
        echo "Usted no está autorizado para realizar esta acción";
    }
} else {
    echo "No se encontraron resultados";
}
$conn->close();
?>

En el fragmento de código anterior, primero realizamos una consulta para obtener el permiso de un usuario basado en su ID. Dependiendo de si el usuario está autorizado o no, realizamos diferentes acciones. Es importante cerrar la conexión una vez que hemos terminado de trabajar con la base de datos para liberar recursos.

Validación y Seguridad en las Consultas

Aunque este método funciona, es fundamental proteger nuestras aplicaciones de ataques como la inyección SQL. Para esto, hacemos uso de declaraciones preparadas. Esta técnica nos permite escribir una consulta SQL con puntos de sustitución para los valores que serán filtrados y revisados por las funciones de PHP, asegurando que son apropiados antes de ejecutar la consulta.

<?php
$stmt = $conn->prepare("SELECT permiso FROM usuarios WHERE id = ?");
$stmt->bind_param("i", $userId);

$userId = 1; // el id del usuario a consultar viene aquí
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0) {
    $row = $result->fetch_assoc();
    if ($row["permiso"] == "autorizado") {
        echo "Usted está autorizado para realizar esta acción";
    } else {
        echo "Usted no está autorizado para realizar esta acción";
    }
} else {
    echo "No se encontraron resultados";
}
$stmt->close();
$conn->close();
?>

A través del uso de sentencias preparadas, hemos mejorado la seguridad de nuestra aplicación, previniendo posibles contaminaciones maliciosas de las variables involucradas.

Gestión de Errores y Excepciones en PHP

Es igualmente crucial estar preparados para gestionar adecuadamente los errores y excepciones que puedan surgir. El manejo de errores nos ofrece una vía para reaccionar a problemas inesperados en tiempo de ejecución, lo que permite que nuestra aplicación degrade de manera elegante en vez de colapsar completamente.

A continuación, un fragmento de código que muestra cómo podemos gestionar errores de conexión y de consulta en un entorno de base de datos:

<?php
try {
    $conn = new mysqli($servername, $username, $password, $dbname);
    if ($conn->connect_error) {
        throw new Exception("Fallo al conectar: " . $conn->connect_error);
    }
    // Resto del código para realizar consulta ...
} catch(Exception $e) {
    echo "Error: " . $e->getMessage();
}
?>

En el ejemplo, se utiliza un bloque try…catch para manejar cualquier excepción que pueda ser lanzada durante la conex

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad