Le problème est que la variable $Q ne contient pas de valeur valide, probablement parce que la valeur passée dans $station1 n'existe pas dans la base de données. J'aurais pensé que CI contrecarrerait cela en utilisant au moins une chaîne vide entre guillemets, mais apparemment non.
Vous devez valider ce $Q contient une valeur sensible avant de la passer à where() . Par exemple, un autre num_rows() check vous dira si la première requête a trouvé quelque chose.
De plus, vous devez transmettre les données de champ de $Q , pas seulement l'objet. Donc dans votre cas, $Q->row()->Zone .