2012-01-05 56 views
-1

我刚刚从MYSQL错误中说:“你的SQL语法有错误;请查看与你的MySQL服务器版本相对应的手册,以便在第一行使用正确的语法”MYSQL重新提取错误

在页面上submiting形式后,我得到了信使。

任何想法?

下面是我用

$sql = "SELECT * FROM member ". 
       "WHERE termId='$term' ". 
       "AND year='$year' ". 
       "AND familyId='$familyId' order by memberId"; 
     $rs = mysql_query($sql) or die(mysql_error()); 
+0

请死($ SQL)和后的结果。 – 2012-01-05 02:15:14

+0

你应该,如果他们来自用户输入您的转义参数,或者你会受到SQL注入攻击(http://www.unixwiz.net/techtips/sql-injection.html) – amccausl 2012-01-05 02:17:18

+0

SELECT * FROM member_class WHERE termId ='2 'AND年='” AND FAMILYID = '' 为了通过MEMBERID – user1079810 2012-01-05 02:30:13

回答

0

始终使用mysql_real_escape_string将字符串中的转义特殊字符的SQL代码。

$term=mysql_real_escape_string($term); 

if(isset($year,$familyid,$term)) 
{ 
    $myear=intval($year); 
    $mfamilyid=intval($familyid); 

    $sql = "SELECT * FROM member WHERE termId='$term' 
      AND year='$myear' 
      AND familyId='$mfamilyId' 
      order by memberId"; 

    $rs = mysql_query($sql) or die(mysql_error()); 
} 
0

您可能需要在查询与反引号如下替换单引号。

$sql = "SELECT * FROM member ". 
     "WHERE termId=`$term` ". 
     "AND year=`$year` ". 
     "AND familyId=`$familyId` order by memberId"; 
$rs = mysql_query($sql) or die(mysql_error()); 
+0

似乎非常,非常不可能的OP期待有效*列名*在'$ term','$ year',等等,这是由围绕这些变量暗示OP使用MySQL的标识符引号(反引号)暗示... – pilcrow 2012-01-05 18:46:08

0

你最后SQL是

SELECT * FROM member_class WHERE termId='2' AND year='' AND familyId='' order by memberId 

我怀疑至少FAMILYID,也许一年也有一些领域,所以这是一个语法错误。

+0

在什么版本的MySQL是一个数字字段比较空字符串*语法*错误?例如,1 ='''和1.0 ='''只是简单的0(MySQL表示* false *)。 – pilcrow 2012-01-05 03:50:37