query mysqli_query mostrar imprimir example error ejemplos catch capturar php mysqli

mysqli_query - php mysqli query



error de inserciĆ³n de mysqli sintaxis incorrecta (1)

La forma más segura de agregar una variable a una consulta SQL es agregarla a través de una declaración preparada .

Por lo tanto, para cada consulta que ejecute, si se va a utilizar al menos una variable, debe sustituirla por un marcador de posición, luego preparar su consulta y luego ejecutarla, pasando variables por separado.

En primer lugar, debe modificar su consulta, agregando marcadores de posición en lugar de variables. Su consulta se convertirá en:

$sql = "INSERT INTO users (fname, lname) VALUES (?, ?)";

Luego, tendrá que prepararlo, vincular variables y ejecutar:

$stmt = mysqli_prepare($conn, $sql); mysqli_stmt_bind_param($stmt, "ss", $fname, $lname); mysqli_stmt_execute($stmt);

Como puede ver, son solo tres comandos simples:

  • prepare () donde envía una consulta con marcadores de posición
  • bind_param donde envía una cadena con tipos ("s" es para cadena y puede usarla para cualquier tipo en realidad) y que las variables reales.
  • y ejecutar ()

De esta manera, ¡siempre puede estar seguro de que los datos que agregó a la consulta no pueden causar un solo error de sintaxis SQL! Como beneficio adicional, este código también es a prueba de balas contra la inyección de SQL.

Es muy importante entender que simplemente agregar comillas alrededor de una variable no es suficiente y eventualmente conducirá a innumerables problemas, desde errores de sintaxis hasta inyecciones SQL. Por otro lado, debido a la naturaleza misma de las declaraciones preparadas, es una solución a prueba de balas que hace que sea imposible introducir cualquier problema a través de una variable de datos.

Sé que muchas personas tienen el mismo error de vez en cuando, sin embargo, he mirado todas las respuestas anteriores y mi código y he intentado col con y sin backticks. Aquí está mi código actual. También he intentado con $var y solo $var pero mismo

if(!empty($_POST[''email''])){ $date = date(''dmY''); #Todays Date $ip = str_replace(''.'','''',$_SERVER[''REMOTE_ADDR'']); #Visitor IP $verify = md5($date.$ip); #MD5 ENCRYPT THE 2 VALUES $fname = $_POST[''fname'']; $lname = $_POST[''lname'']; $email = $_POST[''email'']; $password = md5($_POST[''password'']); $link = mysqli_connect($dbh,$dbu, $dbp, $dbn); $query = mysqli_query($link, "INSERT INTO `users` (`email`,`fname`,`lname`,`verify`,`password`,`joined`) VALUES($email,$fname,$lname,$verify,$password,$date)"); if($query){ echo "inserted"; } else { echo mysqli_error($link); }

Hay otras columnas en la tabla, sin embargo, solo las columnas anteriores que quiero agregar datos para el resto pueden usar valores predeterminados inicialmente

He estado mirando este código durante tanto tiempo que no puedo detectar mi problema, sé que es algo tonto