Essaye d'inverser simple / double quote
par exemple :
car dans le SQL le séparateur de chaine c'est la simple quote
Bonjour,
Voila je rencontre un petit problème avec mon code.
J'ai un système de recherche que j'essais de sécuriser en PDO avec prepare et execute mais voilà lorsqu'il doit aller chercher l'information, il n'en trouve aucunes alors qu'il devrait car elle existe !
L'info que recherche est JeremieMeunier qui dans ma BDD est la valeur d'une colonne u_name malheureusement, mon système me donne un $row de 0. J'aurais aimer savoir si vous aviez une idée du problème !
Merci par avance de votre aide !
Essaye d'inverser simple / double quote
par exemple :
car dans le SQL le séparateur de chaine c'est la simple quote
J'ai essayer comme ça :
Ça ne fonctionne pas et j'ai essayer comme tu le proposait :
Ça fonctionne pas non plus !
Fais un echo de ta requête et si tu as un doute, colle la dans phpmyadmin.
comme tu passes tes arguments lors du execute, ceux-ci sont considérés par défaut comme des caractères (varchar)
donc :
les simple quotes sont rajoutées automatiquement
Huggy bien je essayer de voire ça !
Je ne connais pas bien cette notation avec des ? Moi je met des :mavaleur et dans le execute un tableau associatif, je vois que tu envoies E_sql qui est un string. Ce serais pas ça le problème il faudrait pas envoyé un tableau de valeur
Après avoir regardé la doc http://php.net/manual/fr/pdo.prepared-statements.php
Je pense qu'il faut bien envoyé un tableau dans ton execute car dans l'exemple 2 il utilise deux Bindvalue (qui est la deuxième façon de faire pour passer les données)
@E-Bismuth Oui il faut passer un tableau mais ici la fonction array($E_sql) ne doit pas fonctionner, elle renvoie un tableau d'un seul élément !!!
il faudrait utiliser explode
@Huggy oui je pensais a un truc comme ca!
@JeremieMeunier voila ce que moi j'aurais ecrit, car je trouve ton code peut claire et facielement hors de controle en cas de mise a jour successive
@E-Bismuth à la base $c, je m'en sert mais j'ai raccourcis le code pour le forum
Voilà le bout de code qui utilise $c...
@Huggy et @E-Bismuth il faudrait que j'essaye de la façon dont vous me le proposer mais comme je bosse je ne peut m'y atteler que le dimanche et le mardi !
@E-Bismuth merci pour ton code, il fonctionne ! Voilà seulement j'ai un problème que je ne comprends pas !
J'utilise strlen($search >= 4) il devrait lorsque je fait une recherche c=all&q=JeremieMeunier-cool, me trouver 2 chaîne suffisament longue pour faire fonctionner le système !
Lorsque j'echo la taille des chaine il me donne JeremieMeunier [14] et cool [4] donc jusque là c'est bon ! Sauf que avec le if il ne me prend pas les chaînes comme suffisament longue et passe directement à : C'est trop court !
J'ai essayer en changeant le >= en <= et la ça fonctionne il me fait la recherche et trouve 1 résultat comme c'est sensé faire !
Donc voilà, je n'y comprend plus rien !
Tu as fait une petite erreur d'inattention
Au lieu de: