2014-03-04 118 views
-1

在下面的PHP MySQL查詢不工作

var_dump($row); 

的代碼顯示NULL

$query = "SELECT * FROM maintable WHERE Category LIKE '$word' 
                 OR Title LIKE '$word' 
                 OR Title2 LIKE '$word' 
                 OR Description LIKE '$word' 
                 OR Description2 LIKE '$word' 
                 OR Preimushestva LIKE '$word' 
                 OR Preimspisok LIKE '$word';"; 

      $result = mysqli_query($link, $query) 
      or die("Error: ".mysqli_error($link)); 

      $row = mysqli_fetch_array($result, MYSQLI_ASSOC); 

      var_dump($row); 

$word = 'dolor' ,我有話悲我的表中,在描述標籤幫我找錯誤,請

+0

「我的桌子上有字dolor」---澄清。你有什麼確切的價值? – zerkms

+1

您的腳本可能[容易發生SQL注入](http://bobby-tables.com)。考慮使用Prepared Statements。 – TimWolla

+1

@TimWolla:你不知道它是否容易**。請停止傳播你的猜測作爲事實。謝謝。 – zerkms

回答

5

您錯過了模式匹配字符。沒有他們LIKE基本上與=相同。

下面是一個例子:

$query = "SELECT * FROM maintable WHERE Category LIKE '%$word%' 
                OR Title LIKE '%$word%' 
                OR Title2 LIKE '%$word%' 
                OR Description LIKE '%$word%' 
                OR Description2 LIKE '%$word%' 
                OR Preimushestva LIKE '%$word%' 
                OR Preimspisok LIKE '%$word%';"; 
+1

+1實際解釋你改變了什麼,爲什麼。 –

+0

哦,謝謝你,我不知道。有人能告訴我這件事怎麼樣,所以我可以閱讀它,因爲它對我來說是新的。 我可以在9分鐘內將此標記爲答案,我會做 –

+1

從這裏開始:http://dev.mysql.com/doc/refman/5.0/zh-CN/string-comparison-functions.html –

4

看看這個鏈接:http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html#operator_like

$query = "SELECT * FROM maintable 
       WHERE Category LIKE '%".$word."%' 
       OR Title LIKE '%".$word."%' 
       OR Title2 LIKE '%".$word."%' 
       OR Description LIKE '%".$word."%' 
       OR Description2 LIKE '%".$word."%' 
       OR Preimushestva LIKE '%".$word."%' 
       OR Preimspisok LIKE '%".$word."%';"; 
+0

這是第一個可能正確的答案,所以它絕對不值得讚賞。 –

+0

@GordonLinoff我投降,因爲目前的答案實際上並不解釋任何*,那些'%'對於一個沒有經驗的開發者來說沒有任何意義,並且給OP代碼複製和粘貼並不會讓他們走上正確的軌道。所有。 – Marty

+2

@Marty:即使答案沒有解釋它,但仍然是正確的並且沒有害處 - 它**沒有任何意義**來降低它的效果。 + 1d,因爲在這種情況下低調投票是愚蠢的。 – zerkms

1

我最好的猜測是,你需要尋找'%dolor%'。沒有任何通配符字符的表達式like會搜索完全匹配。

但是,如果您在之後打印出查詢的變量替換,這將有所幫助。如果通配符表單不能解決您的問題,則可以使用此信息編輯您的問題。