2010-08-31 45 views
1

je la chaîne suivante ...Prepping chaîne délimitée par des virgules pour des années mysql OÙ

1,2,3,4,5,6

Je veux avoir cela comme

« 1 », '2', '3', '4', '5', '6'

pour utiliser dans Où est MySQL()

Est-ce que quelqu'un sait la meilleure façon de le faire?

Merci!

+1

Il n'est pas nécessaire d'encapsuler des valeurs entre guillemets simples. MySQL convertira implicitement INTegers en VARCHAR et vice versa en fonction du type de données de la colonne. Ne devrait pas être enveloppé dans des guillemets simples si le type de données est INT ... –

+0

Mais cet argument fonctionne aussi dans l'autre sens, comme "Vous n'avez pas à faire d'hypothèses sur le type dans votre script si vous passez paramètres en tant que chaînes; MySQL convertira implicitement les types applicables " – VolkerK

Répondre

5

Utilisez explode et implode:

$str = "1,2,3,4,5,6"; 
echo "'" . implode("','", explode(',', $str)) . "'"; 

//output: '1','2','3','4','5','6' 
+0

Si vous n'utilisez pas une requête paramétrée: Si vous transmettez les éléments sous la forme de chaînes de caractères, vous devez les traiter comme tels. Soit vous savez que la chaîne d'entrée ne contient que des nombres, auquel cas la critique d'OMG Ponies s'applique, ou vous ne savez pas ce que la chaîne contient et vous devez traiter chaque élément avec la fonction d'échappement appropriée. – VolkerK

+0

@VolkerK, je suis d'accord. Ici, je viens de fournir la solution stricte à la question en laissant les autres implémentations 'MySQL' à l'utilisateur. – shamittomar

0

Vous pouvez explode votre chaîne en un tableau, puis join (ou implode, il est un alias!) Avec les citations:

$str = '1,2,3,4,5,6'; 
$arr = explode(",", $str); // turns your string into array(1, 2, 3, 4, 5, 6); 
$joined_arr = join("', '", $arr); // becomes 1', '2', '3', '4', '5', '6 
$query = "... WHERE ... IN ('$joined_arr')"; // note the two missing quotes have been added in 
0
WHERE (SUBSTRING(SUBSTRING_INDEX(cocodes,cash_out_code,-1),1,1)=','OR... 

c'est en fait une combinaison de fonctions de chaîne .. juste essayer dans cette direction