SELECT查询语法问题

时间:2011-08-12 13:41:16

标签: php mysql

我无法弄清楚这种语法有什么问题:

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

我不断收到此错误消息:

  

解析错误:语法错误,...中的意外T_VARIABLE

我知道$ companyName和$ categoryids有我需要的值,但语法似乎有问题可能sombody请帮帮我?感谢

5 个答案:

答案 0 :(得分:4)

您使用'$companyName'周围的单引号提前关闭字符串,这就是PHP为您提供解析错误的原因。

您可以通过转义这些引号来解决此问题(就像您使用$companyids一样),但是变量不会插入单引号字符串中。您不需要简单地转义单引号,而是需要在整个字符串周围使用双引号:

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

这假设$categoryids是逗号分隔的数字ID列表。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

公司名称周围的单引号会导致语法错误,请尝试以下操作:

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

答案 3 :(得分:0)

我认为你缺少连接运算符:

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

答案 4 :(得分:0)

您的查询包含在''中,而查询中也会出现这些问题 - 或者至少尝试这样做。

此外,您忘记致电mysql_real_escape()以逃避您的字符串以进入查询..