¿Alguien puede decirme por qué no se ejecuta la consulta en el siguiente código php?

<html>
  <head>
    <title>
      Welcome
    </title>
  </head>
  <body>
    <?php
$fn=$_POST['f_name'];
$ln=$_POST['l_name'];
$gen=$_POST['sex'];
$dob=$_POST['dob'];
$em=$_POST['email'];
$un=$_POST['u_name'];
$pd=$_POST['pswd'];
$mb=$_POST['mob'];
$con=mysqli_connect('localhost','username','password','db')
   or die("Error connecting to database");
$query="INSERT INTO user_details(First_Name, Last_Name, Gender, DOB, Email_Address,
Username, Password, Mobile_No) VALUES                   
('$fn','$ln','$gen','$dob','$em','$un',SHA('$pd'),'$mb')";
echo $gen;
$result=mysqli_query($con,$query) 
  or die("Error querying the database");

mysqli_close($con);
$name=$fn.' '.$ln;
echo "<b>Welcome $name</b>";
    ?>
  </body>
</html>

Lo que intento hacer en este código es tomar datos de un formulario HTML y almacenarlos en una base de datos MYSQL. Incluso revisé minuciosamente mi base de datos en busca de conflictos de tipo o problemas de longitud de tipo de datos, pero aún no lo entiendo. No sé por qué se muestra >> ¿Error al consultar la base de datos? Gracias por adelantado.

preguntado el 03 de mayo de 12 a las 15:05

mysql_error() le dirá qué error mysql le está dando -

No veo ninguna forma.... -

$resultado=mysqli_query($con,$consulta) or die(mysql_error()); para obtener el error exacto. -

¿Por qué estás construyendo una cadena de consulta grande y desagradable como esa con mysqli? Simplemente use declaraciones preparadas y las cosas se vuelven mucho más seguras y fáciles. -

@Cylindric más fácil? ¿Por qué las declaraciones preparadas son más fáciles? ¿Puede mostrar el código que usa declaraciones preparadas de mysqli y que en realidad es más corto que una consulta simple? -

3 Respuestas

Cambiar

$result=mysqli_query($con,$query) 
  or die("Error querying the database");

a

$result=mysqli_query($con,$query) 
  or die($mysqli->error);

Esto le proporcionará el mensaje de error exacto del servidor. los docs están aquí

contestado el 03 de mayo de 12 a las 15:05

Primero, debe usar declaraciones preparadas con mysqli. Es muy simple de hacer.

En segundo lugar, debes usar ...or die($mysqli->error) para ver el mensaje de error.

contestado el 03 de mayo de 12 a las 15:05

un código adecuado de alguien que tenga una pista para obtener el mensaje de error en caso de una consulta fallida

$result = mysqli_query($con,$query) 
  or trigger_error(mysqli_error($con)." ".$query);

contestado el 03 de mayo de 12 a las 16:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.