2009-11-18 8 views
0

J'ai besoin de mon code suivant pour fonctionner.Instruction MySQL LIKE et variable PHP

Je suis en train d'utiliser une variable PHP et ajouter également [charlist] Déclaration Wildcard lui

pourrait aider quelqu'un s'il vous plaît comprendre pourquoi il ne fonctionnera pas.

Fondamentalement, il fonctionne si je retire la [charlist] Wildcard mais j'ai besoin de trouver toutes les lettres qui sont dans la variable PHP

mon code est aussi suivi

LIKE ''[' $searchWord ']%'' 
+0

Belle injection SQL, je vais le prendre – shylent

Répondre

0

Si $ searchword est un tableau, essayez en appelant imploser d'abord sur elle:

$listOfCharacters = str_split($searchWord, 1); 
$implodedString = implode(',', $listOfCharacters; 

La chaîne implosion est une chaîne virgule maintenant seperated au lieu d'un tableau. PHP ne convertit pas les tableaux en chaîne par lui-même. Ensuite, vous pouvez probablement l'utiliser comme:

LIKE ''[' $implodedString ']%'' 

Bien que je me méfie de l'utiliser sans chaîne concatonation ici. Manquons-nous un morceau de code ici?

3

Pour utiliser une classe de caractères, vous devez utiliser l'opérateur REGEXP.

De plus, après une classe de caractères, vous devez indiquer un opérateur de répétition. % Correspond à toute chaîne (et est seulement pour LIKE), mais si vous voulez l'appliquer afin qu'il corresponde une série de lettres contenues dans votre classe de personnage, vous devez faire:

$query = '`column` REGEXP "[' . $searchWord . ']+"'; 

Vous pouvez également utiliser un * pour correspondre à 0 ou plus. (+ Est 1 ou plus)

+0

Dites si je voulais travailler de la manière comment pourrais-je faire le suivant: Si $ searchword = AM comment puis-je obtenir si afficher les résultats qui ont seulement AM dans la phrase? –