Je suis un nouveau venu sur PDO et je dois dire que je l'aime jusqu'à présent mais je suis encore un peu instable sur certains des appels qu'il utilise et la documentation n'est pas si solide. J'utilise quelques procédures stockées et d'après ce que je comprends à propos de PDO, je suis obligé d'utiliser préparer pour cela. Je construis un module qui va stocker des informations sur les erreurs qui ont été causées par l'utilisateur. Je comprends que bindParam échappera à toutes les citations et nettoiera la chaîne avant qu'elle ne soit insérée dans la base de données, ce qui n'est PAS ce que je veux. Je veux voir la chaîne que l'utilisateur l'a saisie à des fins de dépannage. J'ai essayé de renoncer aux appels bindparam mais obtenir des erreurs sur la tentative de passer par référence. Y a-t-il un moyen de réaliser cela? Aussi ouvert aux suggestions. Merci.Clarification sur PDO et bindparam
4
A
Répondre
6
bindParam
n'échappe pas ou ne «nettoie» rien en tant que tel. Il envoie la chaîne que vous lui fournissez directement dans la couche de base de données, verbatim. Tout caractère '
inclus dans la chaîne se terminera par un caractère '
dans la colonne de la base de données. C'est tout le point de paramétrage: il n'y a pas de «caractères spéciaux» à s'inquiéter.
Si vous rencontrez des problèmes pour passer des non-références à bindParam
, je suggère d'utiliser bindValue
à la place. En fait, je recommande fortement d'utiliser cet appel tout le temps, parce que le comportement de prise de référence de bindParam
(et mysqli_stmt_bind_param
) est confus et presque toujours indésirable.
Questions connexes
- 1. PDO-> bindParam, PDO-> bindValue et PDO-> closeCursor
- 2. passe PDO Type bindParam dans le tableau
- 3. Postgres/PHP PDO :: PDOStatement-> bindParam() Caractère du champ (1)
- 4. Afficher la valeur de bindParam en utilisant PHP PDO
- 5. Liste des paramètres PDOStatement :: bindParam data_type
- 6. Problème d'encodage de chaîne sur PdoStatement-> bindParam()?
- 7. PDO et PDOStatement, affectations magiques
- 8. PDO lastInsertId problèmes, php
- 9. Utilisez les deux statuts PDO et filter_var?
- 10. En PHP, le PDO :: PDOStatement-> bindParam() fonctionne-t-il comme prévu?
- 11. Numéro de paramètre invalide sur PDO Statement
- 12. Sur system.out, la clarification nécessaire
- 13. Ai-je vraiment besoin de bindParam?
- 14. PDO Requête n'imprimant rien
- 15. PHP et file_exists - clarification d'une note sur la documentation
- 16. Pourquoi bindValue ou BindParam ne modifie pas l'instruction préparée?
- 17. PHP PDO fetch null
- 18. recherche en utilisant pdo, mysql et php
- 19. Clarification AutoResetEvent
- 20. Chaînes OpenSSL Bio: Clarification sur la documentation
- 21. Pilote PDO MySQL sur Mac
- 22. Clause WHERE confusion avec PDO
- 23. Comment exécuter une procédure stockée à l'aide de variables de formulaire PDO et PHP?
- 24. Clarification sur les bits de masquage
- 25. Clarification nécessaire sur la spécification Java EE
- 26. Arguments d'échappement pour les instructions PDO?
- 27. vérification des données php et la clarification
- 28. Clarification VS Solutions et Web Project
- 29. Paramètres positionnels et nommés PDO dans le cadre de la même requête préparée?
- 30. réelle chaîne d'échappement et PDO
Merci! Je vais utiliser bindValue à la place. Je suis un peu confus ... J'avais la forte impression que lorsque je passais des fonctions mysql_ à PDO, je n'avais plus besoin de mysql_real_escape_string. S'il vous plaît dites-moi que PDO est en train de gérer cela pour moi déjà que j'ai lu au moins une demi-douzaine d'autres endroits. – jim
@jim: Si une réponse a résolu votre problème, assurez-vous de cliquer sur la coche à côté de celle-ci afin que la personne qui a posté soit créditée :) – Matchu
Oui, vous n'avez pas besoin de mysql_real_escape_string avec PDO. La valeur de chaîne va directement dans la couche de la base de données sans qu'il soit nécessaire d'être grossièrement épissée dans l'instruction SQL. Comme il n'est pas encadré dans un littéral de chaîne SQL, il n'est pas nécessaire d'échapper quoi que ce soit. – bobince