2009-09-30 9 views
0

que je dois faire une sélection qui ne sélectionner que les ABV = « oui » et d'autres filtres, comme:MySql Choisir problème

SELECT * 
FROM `business` 
WHERE `category` LIKE ('$_GET[search]%') 
OR `location` LIKE ('$_GET[search]%') 
OR `name` LIKE ('$_GET[search]%') 
OR `address` LIKE ('$_GET[search]%') 
AND `apv`='yes' 

Ce ne fonctionne pas, si je mets tout cela et ne retourne rien, d'autre part, si je mets ou des retours, y compris le apv est différent de « oui »

je dois sélectionner:

SELECT * 
FROM `business` 
WHERE `category` LIKE ('$_GET[search]%') 
OR `location` LIKE ('$_GET[search]%') 
OR `name` LIKE ('$_GET[search]%') 
OR `address` LIKE ('$_GET[search]%') 

Mais seulement avec apv = « yes »

+3

Non directement liée à la question, mais attention aux vulnérabilités d'injection SQL. Le SQL dynamique dans cette question a un gros trou de sécurité. – Asaph

Répondre

2

Essayez

SELECT * 
FROM `business` 
WHERE (
`category` LIKE ('$_GET[search]%') 
OR `location` LIKE ('$_GET[search]%') 
OR `name` LIKE ('$_GET[search]%') 
OR `address` LIKE ('$_GET[search]%') 
) 
AND `apv`='yes' 
2

Avez-vous essayé de mettre parens autour du ou de clauses?

SELECT * 
    FROM `business` 
    WHERE (
    `category` LIKE ('$_GET[search]%') 
    OR `location` LIKE ('$_GET[search]%') 
    OR `name` LIKE ('$_GET[search]%') 
    OR `address` LIKE ('$_GET[search]%') 
    ) 
    AND `apv`='yes'