2011-01-13 156 views
1

我被要求向客戶端添加一個小AJAX功能。基本上我有3場一個MySQL表:空格分隔MySQL字符串搜索

  • ID
  • 產品

該網站的想法是,用戶開始輸入「姓名」,產品在幾次擊鍵後出現。我的查詢如下所示:

$query = mysql_query("SELECT product FROM mytable WHERE name LIKE '%".$search."%'"); 

一切正常,除非在「名稱」中有空格。例如,如果我有一個名爲「可口可樂」的名稱,那麼當我鍵入「Coca」時,該腳本會成功列出產品,但只要鍵入該空格,它就不會返回任何行。

我到處尋找解決方案。我知道這個空間被解釋爲某種類型的分隔符,但是我可以讓數據庫把這個空間解釋爲......那麼......一個空間?如果沒有,是否有更好的方式來完成我想完成的任務?

編輯:

我跑了它在phpMyAdmin,它實際上返回正確的結果,這使我相信,這一定是什麼東西在PHP。那裏有完整的腳本:

$search = $_GET['search']; 
$already_echoed = array(); 

if (!ereg('[^A-Za-z0-9]', $search) && strlen($search) > 2) { 

$query = mysql_query("SELECT product FROM mytable WHERE name LIKE '%".$search."%'"); 

if (mysql_num_rows($query) > 0) { 

    echo '<h4>Suggestions:</h4><ul>'; 

    while ($product = mysql_fetch_array($query)) { 

    if (!in_array($product['product'], $already_echoed)) { 
    $getProduct = mysql_query("SELECT name, shortname FROM products WHERE id='".$product['product']."'"); 
    $product2 = mysql_fetch_array($getProduct); 

    echo '<li><a href="http://' . $product2['shortname'] . '.mydomain.com">' . $product2['name'] . '</a></li>'; 
    $already_echoed[] = $product['product']; 
    } 

    } 

    echo '</ul>'; 

} 


} 
+2

我很確定我不相信那是發生了什麼事。 「可口可樂%」應該匹配「可口可樂」。你確定沒有其他處理?你能打印出一個實際執行的示例查詢嗎? – 2011-01-13 11:09:25

回答

3
!ereg('[^A-Za-z0-9]', $search 

你看上去不包括字符的允許列表空間。我不會說太多的PHP,也不能去看看文檔。

相關問題