2010-05-26 8 views
1

J'ai besoin de trouver l'identifiant de la catégorie dans le tableau des produits ci-dessous. Cependant le cms_ecom_categories.id est enveloppé avec le caractère & comme &12&. Est-ce qu'il y a une sorte de carte que je pourrais utiliser pour emballer? comme %cms_ecom_categories.id%?Aide MySQL Query

$sql = "SELECT * FROM cms_ecom_products, cms_ecom_categories 
     WHERE cms_ecom_products.pCategories = cms_ecom_categories.id 
       AND cms_ecom_categories.slug = ".$page.""; 

Merci à tous à l'avance qui peuvent aider.

+0

désolé pour la mauvaise mise en forme :) – Andy

Répondre

1

Vous pouvez utiliser LIKE =>WHERE id LIKE %12%

Ou ajoutez les & à l'ID -signs: $page = '&' . $page . '&' =>WHERE id = $page

+0

Merci, je vais donner un tourbillon – Andy

+0

Ainsi, la syntaxe doit être quelque chose comme: $ sql = « SELECT * FROM cms_ecom_products, cms_ecom_categories OU cms_ecom_categories.id comme% cms_ecom_products. pCategories% AND cms_ecom_categories.slug = ". $ page." "; – Andy

+0

Désolé, je pensais qu'il s'agissait de la variable $ page. Essayez ceci: 'LIKE CONCAT ('%', cms_ecom_products.pCategories, '%')'; cela devrait le faire fonctionner. – Alec

1
  • Soit utiliser AND cms_ecom_categories.slug = '&".$page."&' - il suffit de mettre les esperluette dans les citations
  • Ou utiliser le joker _, signifiant exactement un caractère: AND cms_ecom_categories.slug LIKE '_".$page."_'
  • Ou utilisez le caractère générique%, ce qui signifie zéro ou plusieurs caractères: AND cms_ecom_categories.slug LIKE '%".$page."%'

Il pourrait être préférable de modifier la variable $ page elle-même si. Et pourquoi construisez-vous des requêtes SQL à partir d'une chaîne? Vous devriez vérifier parameterized queries ou au moins escape, c'est plus facile et plus sûr.

+0

Merci Konerak, ma déclaration complète réelle se compose de (que je crois est sécurisé) $ sql = "SELECT * FROM cms_ecom_products, cms_ecom_categories O WH cms_ecom_categories.id LIKE% cms_ecom_products.pCategories% AND cms_ecom_categories.slug =". $ Page. "" ; $ stmt = Enregistrement :: $ __ CONN __-> prepare ($ sql); $ stmt-> execute(); – Andy

+0

Cela dépend si vous échappez à la variable de page avant ou non. Vous pourriez mettre 'AND cms_ecom_categories.slug =?' Et plus tard '$ stmt-> execute ($ page)' :) – Konerak

+0

Merci pour votre aide. – Andy