2012-01-05 13 views
-1

MYSQLからエラーが発生しました。「SQL構文にエラーがあります。正しい構文がMySQLサーバーバージョンに対応するマニュアルをチェックして、1行目近くで使用してください」MYSQL再フェッチエラー

ページにフォームを送信した後、私はそのメッセージを得ました。

アイデア?ここで

私は常に文字列の特殊文字をエスケープするためにmysql_real_escape_stringを使用

$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)結果を投稿してください。 –

+0

あなたのパラメータがユーザー入力から来た場合、またはSQLインジェクション(http://www.unixwiz.net/techtips/sql-injection.html) – amccausl

+0

から脆弱になる場合は、パラメータをエスケープする必要があります。SELECT * FROM member_class WHERE termId = '2 'AND year =' 'AND familyId =' 'order by memberId – user1079810

答えて

0

を使用する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がMySQLの識別子クォート(バッククォート)を使用していることを示唆することによって暗示されている '$ term'、' $ year'などの有効な*カラム名*をOPが期待していることは非常にまれです... – pilcrow

0

最終的なSQLは、私は、少なくともfamilyIDを疑う

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

あり、多分にも今年は数フィールドですので、これは構文エラーです。

+0

数値フィールドを空の文字列と比較するMySQLのバージョンでは、*構文*エラー?たとえば、 '1 = ''と' 1.0 = '' 'は単純にゼロです(MySQLの* false *の表現)。 – pilcrow

関連する問題