El número de variables de enlace no coincide en la inserción de declaraciones preparadas
Al ejecutar una declaración INSERT utilizando declaraciones preparadas de MySQLi, los usuarios pueden encontrar el error: " El número de variables de enlace no coincide con el número de campos en la declaración preparada."
Este problema surge cuando el número de variables de enlace proporcionadas en el método bind_param() no no se alinea con el número de marcadores de posición en la consulta INSERT. Por ejemplo, considere el siguiente fragmento de código:
if($stmt = $conn->prepare("INSERT INTO login(user, pass) VALUES(?, ?)")) { /* Bind parameters s - string, b - blob, i - int, etc */ $stmt->bind_param("ss", $user, $pw); /* Execute it */ $stmt->execute(); /* Bind results */ $stmt->bind_result($user, $pw); /* Close statement */ $stmt->close(); $userId = $conn->insert_id; }
En este código, la instrucción INSERT tiene dos marcadores de posición (?): uno para el usuario y otro para el pase. Sin embargo, el método bind_param() vincula dos variables ($user, $pw) a los marcadores de posición. Esto da como resultado un error de discrepancia.
La solución es eliminar la llamada al método bind_result() ya que la instrucción INSERT no devuelve ningún resultado. El siguiente código actualizado inserta datos correctamente en la tabla:
if($stmt = $conn->prepare("INSERT INTO login(user, pass) VALUES(?, ?)")) { /* Bind parameters s - string, b - blob, i - int, etc */ $stmt->bind_param("ss", $user, $pw); /* Execute it */ $stmt->execute(); /* Close statement */ $stmt->close(); $userId = $conn->insert_id; }
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3