Bonjour,
Jusqu'à présent, pour mon petit projet, j'utilisais des requêtes préparées sans le savoir des requêtes préparées mais en y mettant directement mes paramètres, c'était donc inutile. Je m'en suis rendu compte quand j'ai fais des recherches sur les injections SQL.
Je reviens donc avec 3 questions!
Numéro 1 : J'affiche mes données issues de ma BDD dans un tableau HTML. J'ai mis en place un système de pagination en PHP qui fait une requête avec une condition LIMIT. Cette requête étant effectués souvent j'essaie de la faire en préparée, elle fonctionne mais je ne sais pas si elle est "propre". Pouvez-vous me dire si elle est correct?
(Je suis désolé je n'arrive pas à inserer le code. Quand je le fait la page ne se charge pas ... J'éditerais le post quand ça remarchera)
Numéro 2 : Dans le tableau créé avec la requête précédente, je clic sur chaque ligne pour récupérer l'id de l'étudiant qui est envoyé dans un tableau de session par ajax. Je souhaite par la suite effectuer une requête sur ces id donc avec une condition IN mais d'&prés ce que j'ai vu le IN avec un nombre inconnu de paramètres est assez gênant à gérer avec les requêtes préparées et il est impossible de passer un tableau à une requête préparée... D'où ma question : les Id provenant directement de mon tableau HTML et étant par la suite stockés en session, je ne pense pas que l'utilisateur puisse y toucher. Serait-il alors possible de passer par une requête basique pour utiliser le IN ou il y a quand même de trop gros risques au niveau de la sécurité? Dans ce cas ce n'est pas génant de faire comme l'exemple 5 de la doc (http://www.php.net/manual/fr/pdostatement.execute.php), parceque de ce que j'ai compris l'interet des requetes preparées avant la securité c'est quand même le fait de les réutiliser.
Numéro 3 : Pour insérer des champs dans ma BDD je passe par des formulaires générés automatiquement (l'appuie sur un bouton créé un formulaire), chaque champs est stocké dans un array (nom[], prénom[], ...). La comme il y a des inputs je suis sûr qu'il faut utiliser une requête préparée. mais il y a-t-il un autre moyen que de passer par une boucle où on exécute la requête avec des paramètres différents à chaque fois? Parce que ça prend quand même plus de temps que de faire une insertion en une seule fois.
Numéro Bonus ^^: Une autre question, dans tous les exemples de requêtes préparées que j'ai vu, il y avait toujours des argument à "binder". Est-il possible de faire une requête préparée qui est toujours la même, sans argument pour gagner en temps d’exécution puisqu'elle aura déjà était compilée?
Désolé pour ce post un peu long.
Merci.
Partager