2010-01-14 4 views
0

J'ai cherché partout sur Internet pour une réponse à ma question à savoir pourquoi mon instruction sql renvoie false. Je l'ai vérifié sur le validateur sql à mimer et tout ce que j'ai eu, c'est que j'ai utilisé le nom de mot réservé. Il devrait y avoir quelque chose dans ma base de données qui correspond à cette si elle est ici:SQL aide à la requête (très spécifique)

Voici comment je crée l'instruction SQL:

$title = 'SELECT * FROM item, categories WHERE item.title 
LIKE "%'.implode('%" OR item.title LIKE "%', $data).'%"'.' 
AND categories.name = '.$category; 

Et ceci est le résultat:

SELECT * FROM item, categories WHERE item.title LIKE "%hello%" 
OR item.title LIKE "%world%" OR item.title 
LIKE "%Joomla%" OR item.title LIKE "%Animal%" AND categories.name = Book 
+0

Les guillemets doubles sont pour les identifiants, par exemple "item". "titre". Les guillemets simples sont pour les littéraux de chaîne, par ex. '%Bonjour%'. – jarlh

Répondre

3

Vous devriez pensez probablement à votre (manque de) parenthèses. Je ne sais pas exactement ce que vous essayez d'accomplir,

mais ceci:

SELECT 
    * 
FROM item, categories 
WHERE item.title LIKE "%hello%" 
OR item.title LIKE "%world%" 
OR item.title LIKE "%Joomla%" 
OR item.title LIKE "%Animal%" 
AND categories.name = "Book" 

est très différent de ceci:

SELECT 
    * 
FROM item, categories 
WHERE (
    item.title LIKE "%hello%" 
    OR item.title LIKE "%world%" 
    OR item.title LIKE "%Joomla%" 
    OR item.title LIKE "%Animal%" 
) 
AND categories.name = "Book" 

En outre, comme les autres disent, livre devrait être entre guillemets (comme j'ai fait ici).

AND categories.name = "Book" 
+0

Excellent point. En outre, vous voudrez peut-être être: categories.name = 'Book' – sdcoder

+0

Cela ne fonctionne toujours pas sans les guillemets autour de livre. –

+0

Merci, les gars. J'ai mis à jour ma réponse. –

0

Vous devez entourer le mot Book avec des guillemets. Je parie que vous avez également besoin de parenthèses.

SELECT * FROM item, categories WHERE (item.title LIKE "%hello%" 
OR item.title LIKE "%world%" OR item.title 
LIKE "%Joomla%" OR item.title LIKE "%Animal%") AND categories.name = "Book" 
0

la dernière partie, categories.name, est-ce une chaîne? le cas échéant, il devrait être

and categories.name = 'book' 

notez les guillemets autour

livre
+0

aussi, utilisez la réponse @ gabriel car vous aurez besoin de parenthèses autour des OR –