2011-12-28 74 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 2011-12-28 18:25:14

+3

在你的輸入中是否有一個迷路?對數據庫輸入進行淨化處理,或者冒着小型桌子的憤怒。 – asawyer 2011-12-28 18:25:31

+0

@Matten:顯然是MySQL。 – 2011-12-28 18:25:49

回答

2

desc是保留字。 `加入說明:

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

desc是在MySQL的保留字。用反引號嘗試圍繞列名稱。

+0

+1。 – 2011-12-28 18:46:22

1

您收到錯誤消息說,desc是MySQL中的保留關鍵字。

use near 'desc) AGAINST ('yahoo') LIMIT 10 OFFSET 0' at line 1