2011-01-13 166 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,也不能去看看文档。

相关问题