2011-08-12 3 views
0

Je ne peux pas comprendre ce qui ne va pas avec cette syntaxe:problème avec SELECT Interroge syntaxe

$categorynameresult='SELECT DISTINCT cat_name FROM categories WHERE company = '$companyName' AND cid IN(\''.$categoryids.'\')'; 

Je reçois ce message d'erreur:

Parse error: syntax error, unexpected T_VARIABLE in ...

Je sais que $ companyName et categoryids $ ont les valeurs dont j'ai besoin, mais il semble y avoir quelque chose de mal avec la syntaxe Sombody pourrait m'aider s'il vous plaît? Merci

+0

La coloration syntaxique dans ce post devrait vous donner un indice ... – deceze

Répondre

4

Vous fermez la chaîne prématurément avec les guillemets simples autour de '$companyName', ce qui explique pourquoi PHP vous donne une erreur d'analyse.

Vous pouvez résoudre ce problème en échappant à ces guillemets (comme vous le faites avec $companyids), mais les variables ne sont pas interpolées dans les chaînes de guillemets simples de toute façon. Plutôt que de simplement échapper les guillemets simples, vous devez utiliser des guillemets doubles autour de la chaîne entière:

$categorynameresult="SELECT DISTINCT cat_name FROM categories WHERE company = '$companyName' AND cid IN($categoryids)"; 

Cela suppose que $categoryids est une liste séparée par des virgules des ID numériques.

+0

@Henkka Retirez les citations et les antislashs autour de ' $ categoryids' selon ma requête. – meagar

+0

Nous vous remercions de votre aide. Je l'ai fait fonctionner. Merci – Henkka

0

guillemets simples autour de nom de l'entreprise provoque une erreur de syntaxe, essayez ceci:

$categorynameresult='SELECT DISTINCT cat_name FROM categories WHERE company = \''.$companyName.'\' AND cid IN(\''.$categoryids.'\')'; 
+0

C'est faux. $ CompanyName ne sera pas évalué dans cette instruction car il est inclus dans une seule chaîne entre guillemets – Damp

+0

@damp: vous avez raison de le corriger. –

1
 
$categorynameresult="SELECT DISTINCT cat_name FROM categories WHERE company = '$companyName' AND cid IN('$categoryids')"; 
0

Je pense que vous manquez l'opérateur concaténer:

'SELECT DISTINCT cat_name FROM categories WHERE company = \'' . $companyName . '\' AND cid IN(\'' . $categoryids . '\')'; 
+0

vous avez certainement besoin de guillemets simples autour du nom de l'entreprise dans l'instruction SQL. –

+0

merci - fait la mise à jour –

0

Votre requête est enfermé dans '', tandis que ils se produisent également dans la requête - ou, du moins, essayent de le faire.

En plus, vous avez oublié d'appeler mysql_real_escape() pour échapper à vos chaînes à mettre dans la requête ..