2014-01-24 114 views
1

我有一個表有4個領域的答案,名爲a1,a2,a3,a4。 其中一些可能被標記爲正確。我在正確的答案中加上了「 - 正確」。檢查所有colums值

總之,現在用戶選擇答案時,我想比較任何正確的答案。

我只熟悉%LIKE%和WHERE函數。我正在嘗試使用MATCH AGAINST。 任何幫助將不勝感激。

邁克

PHP:

 public function checkAnswer($id, $answer){ 
    try{ 

     $_id = $this->db->mysqli->real_escape_string($id); 
     $_answer = $this->db->mysqli->real_escape_string($answer); 
     $viewer_answered = $_answer."-correct"; 

     $sql = "SELECT * FROM myTbl WHERE match(a1,a2,a3,a4) against('+ $viewer_answered' IN BOOLEAN MODE) AND id='{$_id}'"; 
     $result = $this->db->mysqli->query($sql); 

      if(!$result) 
      { 
       throw new Exception("Query failed: " . $sql . " - " . $this->db->mysqli->error); 
      }else{ 

       // I dont know how to check the result of the match! any help please 

      }  


     } catch(Exception $e){ 
      echo("Message: " . $e->getMessage()); 
     } 



} 
+2

爲什麼不只是存儲在正確的字段值的數量additoinal場。或者更好的是,爲什麼不規範化你的數據,並有一個問題表和答案表與一對多的關係? –

+0

'MATCH ... AGAINST'用於全文搜索。你需要一個全文索引,但是單詞之間用空格隔開,所以這對你來說無效。 –

+0

謝謝!這是@MikeBrant的最佳解決方案。 –

回答

1

您的SQL字符串的格式不正確:

$sql = "SELECT * FROM myTbl WHERE match(a1,a2,a3,a4) against('".$viewer_answered."' IN BOOLEAN MODE) AND id='{$_id}'";