2011-12-28 12 views
1

私はcodeigniterでアプリケーションを作成しています。私はデータベースからチュートリアルを検索する機能を作成しています。しかし、私はエラーが発生しています。私のコードをチェックしてください。SQLクエリーで何が問題なのか教えてください。

function get_tuts($query, $limit, $offset) { 

    $offset = 0; 
    $sql = "SELECT * FROM tutorials WHERE MATCH (title, desc) AGAINST (?) LIMIT ? OFFSET ?"; 
    $q = $this->db->query($sql, array($query, $limit, $offset)); 

    if($q->num_rows() > 0){ 
       foreach($row->result() as $row){ 
        $data[] = $row; 
       } 
      } 
      return $data; 
} 

が、私はこのエラーを取得しています

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 'desc) AGAINST ('yahoo') LIMIT 10 OFFSET 0' at line 1 
+0

どのSQL Serverを使用していますか? – Matten

+3

入力に迷いがありますか?あなたのデータベースの入力を消毒するか、小さなボビーテーブルの怒りを危険にさらします。 – asawyer

+0

@Matten:MySQL、明らかに。 –

答えて

2

descは予約語です。 DESCに `追加:あなたが受け取っている

$sql = "SELECT * FROM tutorials WHERE MATCH (title, `desc`) AGAINST (?) LIMIT ? OFFSET ?"; 
3

言葉descは、MySQLの予約語です。バッククォートで列名を囲んでみてください。

+0

+1が最初です。 –

1

エラーメッセージがdescは、MySQLでの予約語であることを述べています。

use near 'desc) AGAINST ('yahoo') LIMIT 10 OFFSET 0' at line 1 
関連する問題