空间中断MySQL字符串搜索

时间:2011-01-13 11:06:12

标签: php mysql sql

我被要求在客户端网站上添加一个小的AJAX功能。基本上我有一个包含3个字段的MySQL表:

  • ID
  • 产品
  • 名称

网站的想法是用户开始输入“名称”,产品会在几次击键后显示出来。我的查询如下:

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

一切正常,除非“名称”中有空格。例如,如果我有一个名为“Coca Cola”的名称,当我输入“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>';

 }


}

1 个答案:

答案 0 :(得分:3)

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

看起来你要从允许的字符列表中排除空格。我不会说太多PHP,也不会因为看文档而烦恼。