2009-12-01 9 views

Répondre

6

Essayez supports

SELECT * 
FROM `tutorials` 
WHERE (  tags LIKE '% php %' 
      OR tags LIKE 'php %' 
      OR tags LIKE '% php' 
      OR tags = 'php' 
     ) 
AND approved=1 
1

je na pas obtenir ce que vous voulez exactement. Mais cela peut être celui que vous recherchez

SELECT * FROM tutorials( balises LIKE '% php% OR balises LIKE 'php%' ou des balises LIKE '% php' OR tags = 'php' ) et approuvé = 1

2

Je pense que vous manquez quelques: côlons

SELECT * 
FROM `tutorials` 
WHERE (tags LIKE '% php %' OR tags LIKE 'php %' OR tags LIKE '% php' OR tags = 'php') 
AND approved=1 

La raison pour laquelle vous devriez en clude colons, est parce que les opérateurs OR et AND sont sur le même niveau de priorité. Lorsque vous omettez les deux points, votre requête sera analysée comme:

SELECT * 
FROM `tutorials` 
WHERE (tags LIKE '% php %' OR (tags LIKE 'php %' OR (tags LIKE '% php' OR (tags = 'php' 
AND approved=1)))) 

Surtout lors de l'utilisation de longues listes de opérateurs OR et AND dans une requête, il est conseillé d'utiliser pour rendre votre côlons intention claire. Pour une liste complète de la précédence des opérateurs dans MySQL (qui est généralement commune aux autres dialectes SQL), voir the MySQL manual.