无法识别错误

时间:2015-07-09 09:42:46

标签: php mysql

我有一些代码可以根据按下单选按钮显示某些内容。

如果选择no,则会隐藏status_id为15的表中的条目。 选择yes时,它会在status_id为15

的表中显示条目
 if($_REQUEST['statusVal']=="") {
 $condition1= " AND MO.status_id <>'15'";
 }
 if($_REQUEST['statusVal']=="archive") {
 $condition1 =" "; 
} if($_REQUEST['statusVal']=="all") { 
$condition1= " AND MO.status_id <>'15'";
}

$mode        = $_REQUEST['mode'];
$mode_toggle = $_REQUEST['mode_toggle'];

$sql="SELECT MO.ssrs_id,MO.member_id,MO.assr_user_id,MO.product_id,MO.component_id,MO.status_id,MO.summary,MO.priority,V.product_name,M.component,T.name,S.statusTitle,S.flag_id FROM ".ASSR_SSRS." MO,".PRODUCTS." V,".PROD_COMPONENTS." M,".ASSR_USER." T ,".ASSR_STATUS." S WHERE MO.product_id=V.product_id AND MO.assr_user_id=T.assr_user_id AND MO.component_id=M.component_id AND MO.status_id=S.status_id AND MO.member_id='$memberID' ORDER BY MO.lastupdate DESC".$condition1; 

$row_count = getRowCount($sql);
            $sql .= $GLOBALS[sql_page]; 
            $result=mysql_query($sql) or die(mysql_error());

我在网络浏览器上显示此错误(使用最新的Chrome)

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND MO.status_id <>'15' LIMIT 0,10' at line 1

请帮帮我

2 个答案:

答案 0 :(得分:1)

您正在ORDER BY子句之后添加条件,这是错误。

以下是更正后的SQL:

$sql="SELECT MO.ssrs_id,MO.member_id,MO.assr_user_id,MO.product_id,MO.component_id,
MO.status_id,MO.summary,MO.priority,V.product_name,M.component,T.name,
S.statusTitle,S.flag_id FROM ".ASSR_SSRS." MO,".PRODUCTS." 
V,".PROD_COMPONENTS." M,".ASSR_USER." T ,".ASSR_STATUS." S WHERE 
MO.product_id=V.product_id AND MO.assr_user_id=T.assr_user_id AND 
MO.component_id=M.component_id AND MO.status_id=S.status_id AND 
MO.member_id='$memberID' " . $condition1 . "ORDER BY MO.lastupdate DESC";

答案 1 :(得分:1)

这是您的查询

$sql="
SELECT 
MO.ssrs_id,
MO.member_id,
MO.assr_user_id,
MO.product_id,
MO.component_id,
MO.status_id,
MO.summary,
MO.priority,
V.product_name,
M.component,
T.name,
S.statusTitle,
S.flag_id 
FROM ".ASSR_SSRS." MO,".PRODUCTS." V,".PROD_COMPONENTS." M,".ASSR_USER." T ,".ASSR_STATUS." S 
WHERE 
MO.product_id=V.product_id 
AND MO.assr_user_id=T.assr_user_id 
AND MO.component_id=M.component_id 
AND MO.status_id=S.status_id 
AND MO.member_id='$memberID' 
ORDER BY MO.lastupdate DESC".$condition1;

在这里,您要在最后附加动态条件,如果您有$condition1某些条件

,这会使查询无效

order by MO.lastupdate DESC AND MO.status_id <>'15'因此语法错误

应该是

$sql="
SELECT 
MO.ssrs_id,
MO.member_id,
MO.assr_user_id,
MO.product_id,
MO.component_id,
MO.status_id,
MO.summary,
MO.priority,
V.product_name,
M.component,
T.name,
S.statusTitle,
S.flag_id 
FROM ".ASSR_SSRS." MO,".PRODUCTS." V,".PROD_COMPONENTS." M,".ASSR_USER." T ,".ASSR_STATUS." S 
WHERE 
MO.product_id=V.product_id 
AND MO.assr_user_id=T.assr_user_id 
AND MO.component_id=M.component_id 
AND MO.status_id=S.status_id 
AND MO.member_id='$memberID' 
".$condition1."
ORDER BY MO.lastupdate DESC";