2015-02-09 225 views
1

我有表:在數據庫中搜索數據。 PHP

|-id-|--------name-------| 

| 1 | George Martin | 

我拉數據,如:

function search ($query) 
{ 
    $query = trim($query); 
    $query = mysql_real_escape_string($query); 
    $query = htmlspecialchars($query); 

    if (!empty($query)) 
    { 
     if (strlen($query) < 3) { 
      $text = '<p>Enter 3 or more letters.</p>'; 
     } else if (strlen($query) > 128) { 
      $text = '<p>Too many letters.</p>'; 
     } else { 
      $q = "SELECT * 
        FROM `table` WHERE `name` LIKE '%$query%'"; 

      $result = mysql_query($q);... 

當我在搜索 「喬治」 的類型,它發現 - 「喬治·馬丁」

當我輸入我的搜索「馬丁」,它發現 - 「喬治馬丁」

當我輸入我的搜索「馬丁喬治」,它沒有找到我任何東西。

有沒有辦法做最後拉動而不用namesecond name新表?

+0

你可以考慮做在桌子上的FTS指數和使用MATCH而不是像搜索。 – 2015-02-09 07:24:28

+0

你可以拆分'$ query'並且匹配單個查詢嗎? – Uzair 2015-02-09 08:07:26

+0

正如http://php.net/manual/en/migration55.deprecated.php所說,「原來的MySQL擴展現在已被棄用,並且在連接到數據庫時會生成E_DEPRECATED錯誤,而是使用MySQLi或PDO_MySQL擴展名」 。你應該使用PDO:http://php.net/manual/en/book.pdo.php – Mawg 2015-02-09 08:55:21

回答

-1

您的查詢應該是

SELECT * FROM `table` WHERE `name` LIKE '%$query%' or `name` ='$query'"; 
+0

甚至沒有提到不安全地逃脫他的變量? – Tschallacka 2015-02-09 07:25:11

+1

@MichaelDibbets如何考慮安全問題添加答案? – Beatles1692 2015-02-09 08:28:23

+1

他不必擔心他使用PDO(因爲他應該這樣做,而不是mysql)。 – Mawg 2015-02-09 08:56:26