es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Al pasar una cadena en lugar de un entero a bind_param en PHP, se realiza una conversión de tipos?

Tengo el siguiente código en php:

$post_id = $_GET[“id”];
$stmt = $conn->prepare(“SELECT title FROM posts WHERE id=?”);
$creator = “Anupam”;
$stmt->bind_param(“i”, $post_id);
$result = $stmt->execute();

Esto funciona perfectamente para páginas web como http://localhost2/post.php?id=3202. Pero noté que incluso páginas como http://localhost2/post.php?id=3202XYZ o http://localhost2/post.php?id=3202xyz/css/style.css funcionan como si todo lo que estuviera después de 3202 hubiera sido eliminado.

¿Bind_param realiza una conversión de tipo a int para los parámetros “i”? Los documentos de PHP no mencionan nada al respecto.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, bind_param realiza una conversión de tipo a int para los parámetros i. Según la documentación de PHP, el tipo de parámetro i representa un “entero firmado”, y bind_param convertirá $post_id a un entero antes de enviar la consulta a la base de datos. Por eso, todo lo que sigue después de 3202 se ignora, ya que no se puede convertir a un entero y se trata como 0.

Comments are closed.