On passe en paramètres les variables qui viennent de l'extérieur de la requête.
Par exemple, dans la requête SELECT * from user where id = 1, le "1" est une donnée variable qui vient de l'extérieur de la requête.
Dans ton cas,
where ac.accountNo = acc.accountNo
c'est une instruction SQL qui fait partie de la requête. Donc ce n'est pas un paramètre.
Pour qu'il y ait une injection, il faut que quelque chose de nocif rentre dans la requête.
En gros, il y a un risque si tu écris quelque chose du genre "SELECT * from user where id = ".$_POST['id'], parce que tu ne maitrises absolument pas ce qui arrive de ton formulaire. Mais une instruction SQL qui fait partie de la structure de la requête ne craint rien.
Au passage, deux recommandations pour la structure de ta requête :
Utiliser l'intruction JOIN pour faire tes requêtes, ça évite des confusions entre ce qui permet de relier les tables entre elles et les filtres proprement dits Le SQL de A à Z - le SELECT sur plusieurs tables
Faire une liste complète des champs à récupérer dans le SELECT plutôt qu'un SELECT * : ça permet de maitriser ce que tu récupères, de ne pas récupérer 2 fois la même information (dans ton cas, accountNo est retourné 2 fois par la requête : une fois en provenance de la table Activities et une fois en provenance de la table accountDetails )
Partager