2013-02-24 3 views
0

J'ai une liste de valeurs et je voudrais vérifier si l'une des valeurs existe dans MySQL avec une instruction.Vérifier si des valeurs existent avec une instruction

$tags = "VALUE-IN-MySQL,DOESNT-EXIST1,DOESNT-EXIST2"; 

$tagArray = explode(",", $tags); 
$qMarks = str_repeat('?,', count($tagArray) - 1) . '?'; 

$tagsCheck = $dbh->prepare("SELECT * FROM tags WHERE tag IN ($qMarks)"); 
$tagsCheck -> execute($tagArray); 
echo $tagsCheck -> rowCount(); 

Le problème est que l'écho de 1 si au moins un existe dans la déclaration, mais je wan't de refuser la déclaration même si une seule valeur existe dans le groupe, mais d'autres ne le font pas.

Est-ce possible?

+0

ne pas suivre la question très clair. Parlez-vous de "AND" déclaration SQL? où tag LIKE '?' ET tag comme '?' ... ou autre chose? –

+0

@ i-- Je vais avoir une liste de valeurs délimitées par des virgules, si elle a 3 valeurs, 4 valeurs, ou 5. De toute façon, il va dans une chaîne, qui dans mon cas, je deviens un tableau . Je voudrais vérifier MySQL si l'une de ces valeurs dans la chaîne ou le tableau n'existe pas dans le mysql. – hellomello

+0

Vous ne devriez pas utiliser une explosion simpliste comme ça. Cela ressemble à des données CSV, vous devriez donc utiliser [str_getcsv()] (http://php.net/str_getcsv) à la place. Considérez ce qui se passerait si l'une de ces valeurs contenait naturellement une virgule: «Bonjour, Newman», Jerry, Elaine. vous finiriez par chercher ** QUATRE ** articles, pas 3. –

Répondre

0

Essayez ceci:

"SELECT count(*) total, * FROM tags WHERE tag IN ($qMarks) GROUP by tag HAVING total > 0" 
0

Sur la base des questions ci-dessus, mon script fonctionne. Cependant, il compte combien existe, si aucun n'existe alors je ferai sinon vérifier comme Madan Sapkota suggéré.

+0

J'ai retravaillé ma réponse précédente, si vous êtes toujours intéressé. –

Questions connexes