mysql OÙ DANS la gamme de la chaîne / nom d'utilisateur
Code:
$friendsArray = array("zac1987", "peter", "micellelimmeizheng1152013142");
$friendsArray2 = join(', ',$friendsArray);
$query120 = "SELECT picturemedium FROM users WHERE username IN ('$friendsArray2')";
echo $query120;
C'est la sortie :
SELECT picturemedium FROM users WHERE username IN ('zac1987, peter, micellelimmeizheng1152013142')
Il échoue parce que les noms d'utilisateur ne sont pas emballés par des guillemets simples comme "zac1987', 'pierre', 'souris...'. Comment peut-chaque identifiant être enveloppé avec des guillemets simples?
Envisager d'ajouter le Perl ou PHP balise à cette question afin de toucher un public plus large.
OriginalL'auteur zac1987 | 2011-07-07
Vous devez vous connecter pour publier un commentaire.
Nous allons parcourir chaque nom un par un, en échappant à chaque.
Je vais vous recommandons d'utiliser une réelle MySQL s'échapper de la fonction plutôt que de simplement emballer des guillemets autour de, pour s'assurer que les données qui se passe réellement dans la requête correctement. (Sinon, si je suis entré un nom comme
It's me!
, l'apostrophe serait gâcher la requête.) Je vais supposer que vous êtes à l'aide de AOP (que vous devriez!), mais dans le cas contraire, remplacer les références àPDO::quote
avecmysql_real_escape_string
.Oui, cela devrait être le cas ici. Ce que vous avez besoin est
$friendsArray[$key] = "'".mysql_real_escape_string($friend)."'";
.WOW! Ça marche!!!! Merci beaucoup 🙂
derp. Été un moment depuis que j'ai utilisé le standard les fonctions de MySQL xD Merci pour l'astuce 🙂
OriginalL'auteur Matchu
Si vous ne voulez pas utiliser PDO ou d'autres compliqué, la solution imploser fonction et vous êtes tous ensemble.
Solution : je viens d'éclater votre
$friendArray
par','
que c'est. clair et simple! et Cela fonctionne.Sortie :
SELECT picturemedium FROM users WHERE username IN ('zac1987','peter','micellelimmeizheng1152013142')
Pas très propre bien & il pourrait obtenir un peu buggy, lorsque l' $friendsArray serait un tableau vide, la condition de fin de beign DANS (") et ce n'est certainement pas souhaitable.
OriginalL'auteur Jignesh Bhavani
Trouve cette question sur Google et ce faisant trouvé une solution. Pas sûr de la façon "correcte" cette solution est, mais il a travaillé pour moi.
Cela semble avoir un pas d'ajouter le milieu des guillemets simples. Je crois que ce que Jeremy censé post est: $friendsArray2 = "'" . join("', '",$friendsArray) . "'";
Au milieu il manque des guillemets simples (dans le cas de numéros), devrait être
$friendsArray2 = "'" . join("', '",$friendsArray) . "'";
OriginalL'auteur Jeremy Duenas
Tout est facile si vous n'avez que des numéros. Mais si vous avez des chaînes, vous devez vérifier pour les devis et faire attention.. Si vous ne voulez pas utiliser PDO ou "mysql_real_escape_string", d'après le code est OK. J'ai testé, cela fonctionne bien.
OriginalL'auteur trante
Juste eu à faire quelque chose de très similaire. C'est une façon très simple de faire ce que j'ai compris après beaucoup de maux de tête.
cela va ajouter des guillemets entre chaque élément dans le tableau, mais pas au début ou à la fin Donc: $friendsArray2 = "zac1987','pierre','micellelimmeizheng1152013142"
maintenant, tout ce qu'il vous manque est l'apostrophe avant le z dans zac1987 et à la fin après 3142
pour résoudre ce juste envelopper $friendsArray2 dans des guillemets simples au sein de votre instruction SELECT.
Son été essayé, testé et vrai.
De SORTIE:
SÉLECTIONNEZ picturemedium from users where username ('zac1987', 'pierre', 'micellelimmeizheng1152013142')
OriginalL'auteur Kevin Haines