php - 空格中断 MySQL 字符串搜索

标签 php mysql sql

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

  • 编号
  • 产品
  • 姓名

该站点的想法是,用户开始输入“名称”,然后在敲击几次按键后显示产品。我的查询如下所示:

$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>';

 }


}

最佳答案

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

看起来您正在从允许的字符列表中排除空格。我不太会说 PHP,也懒得去看文档。

关于php - 空格中断 MySQL 字符串搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4679355/

相关文章:

mysql - 项目之间共享数据..创建一个共享数据库?

php - 不使用单引号转义mysql?

php - 让PHPStorm始终登录FTP

MySQL 查询 - 每个订单的平均行数,每月

mysql - SQL 分组依据并显示不同的值

mysql - 我可以将这两个 SQL 查询合并为一个吗?

php - 在 TCPDF 中,如何将当前页码获取为整数?

php - 如何使用 PDO 检查数据库中是否存在一行?

mysql - Mysql 上的 Zend 框架查询

php - Mysql查询奇怪失败