Revisa el manual:
https://www.php.net/manual/es/pdosta....bindparam.php
Para entender mejor el comportamiento de esto, lo que enlazas es la variable y no su valor:
Código PHP:
Ver original$siono = '';
$query->bindParam(':siono', $siono); // Asignaste una cadena vacía?
// No, asignaste una variable que, por ahora, es una cadena vacía
$siono = 'Sí'; // Esto actualizará el valor enlazado
// Todos los cambios a esta variable seguirán afectando ese valor
Si usas la misma variable para varios parámetros, todos tendrán el mismo valor.
Lo que puedes hacer es armar un array con los parámetros y enviarlo al ejecutar la consulta, en lugar de enlazar:
Código PHP:
Ver original$params = [];
for($i = 0;$i < count($camposextras); $i++){ // echo $_POST["chk_".$camposextras[$i]];
if(isset($_POST["chk_".$camposextras[$i]])){ $siono="SI";
}else{
$siono="NO";
}
echo "siono=".$siono."<br>";
$campo = ":".$camposextras[$i];
echo "campos=".$campo.",".$siono."<br>";
$params[":$campo"] = $siono;
}
// Después ejecutas la consulta
$query->execute($params);