0

Saludos, tengo una lista de nombres de una base de datos en una tabla, al darle en ver detalles ,me enlaza a otro fichero php en el que me gustaría ver los detalles completos de esa persona y que no salgan del resto aquí tengo el código de los detalles de la persona, no se como seguir. Gracias:

 <?php
        include ("conexion.php");

     $query ="Select * from empleados where nombre=".$_POST["nombre"];
        $rows = $conexion->query($query);

        $row=$rows->fetch_assoc();
        ?>

        <p><strong>ID: </strong><?php echo $row["id"]?></p>
        <p><strong>nombre: </strong><?php echo $row["nombre"]?></p>
        <p><strong>apellido: </strong><?php echo $row["apellido"]?></p>
        <p><strong>dni: </strong><?php echo $row["dni"]?></p>
        <br/>

        <a href="index.php">Inicio</a>
        <?php
        $conexion = null;
        ?>
paez
  • 1
  • 1
  • 2
    Te recomiendo que leas sobre [inyección SQL](https://es.stackoverflow.com/q/10518/250) y [cómo evitarla en PHP](https://es.stackoverflow.com/q/18232/250). El código que compartes presenta vulnerabilidades graves de seguridad, puede sufrir ese tipo de ataques y no debería usarse en un entorno de producción. – Alvaro Montoro Nov 07 '17 at 18:43
  • Asi es concuerdo totalmente con el comentario anterior, por eso en mi respuesta te muestro la mejor manera de hacerlo, sin embargo recuerda limpiar los valores como el nombre y eso. – ByGroxD Nov 07 '17 at 19:32
  • De acuerdo, gracias. – paez Nov 07 '17 at 23:46

1 Answers1

1

Tu archivo de conexion te lo recomiendo de la siguiente manera Conexion.php

<?php
try {
    $db = new PDO('mysql:host=localhost;dbname=tudb', 'root', '');
} catch (PDOException $e) {
    print "¡Error!: " . $e->getMessage() . "<br/>";
    die();
}
?>

Tu otro archivo cuyo nombre no se deberia ir asi:

<?php
$nombre = $_POST['nombre'];
$query = $db->prepare("SELECT * FROM empleados WHERE nombre = :nombre");
$query->bindParam(':nombre', $nombre);
$query->execute();
?>

<?php foreach ($query as $row): ?>
<p><strong>ID: </strong><?php echo $row["id"]?></p>
<p><strong>nombre: </strong><?php echo $row["nombre"]?></p>
<p><strong>apellido: </strong><?php echo $row["apellido"]?></p>
<p><strong>dni: </strong><?php echo $row["dni"]?></p>
<?php endforeach ?>
<br/>

<a href="index.php">Inicio</a>

Ya depende de ti modificarlo a tu gusto.

ByGroxD
  • 753
  • 1
  • 17
  • 44
  • La pregunta tiene la etiqueta `mysqli` ¿y tú respondes con código `PDO`? – A. Cedano Nov 07 '17 at 23:30
  • Acabo de empezar con php hace poco y no se manejarme bien con el PDO pero no hay problema me mirare documentación, gracias! – paez Nov 07 '17 at 23:50
  • Ofrezco lo mejor y lo actual, de igual manera le ayudo de lo contrario no me hubiese dado su punto, o hubiese comentado. – ByGroxD Nov 07 '17 at 23:50
  • Que bueno haberte ayudado paez y si es mejor que utilices lo actual de PHP ya que pronto sera removido mysqli de PHP, PDO es mas rapido y mucho mas seguro, incluso a mi se me hace mas facil de usar, cualquier duda puedes seguir comentando aqui en stackOverFlow, si te sirvio recuerda calificarme como respuesta a tu pregunta. – ByGroxD Nov 07 '17 at 23:51
  • Sí me e dado cuenta mirando por internet ejercicios cambian muchas variables entre versiones de php y msql, mi codifo de conexion es este:$conexion = new mysqli('localhost','paez','root','empresa'); if($conexion->connect_error){ echo "No se ha podido acceder a la base de datos"; exit(); } – paez Nov 07 '17 at 23:55