¿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.
davy.ai
Sí,
bind_param
realiza una conversión de tipo aint
para los parámetrosi
. Según la documentación de PHP, el tipo de parámetroi
representa un “entero firmado”, ybind_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 de3202
se ignora, ya que no se puede convertir a un entero y se trata como0
.