Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 空格分隔MySQL字符串搜索_Php_Mysql_Sql - Fatal编程技术网

Php 空格分隔MySQL字符串搜索

Php 空格分隔MySQL字符串搜索,php,mysql,sql,Php,Mysql,Sql,我被要求向客户端站点添加一个小的AJAX特性。基本上我有一个MySQL表,有3个字段: 身份证 产品 名字 该网站的理念是用户开始输入“名称”,产品在几下按键后就会显示出来。我的查询如下所示: $query = mysql_query("SELECT product FROM mytable WHERE name LIKE '%".$search."%'"); 除了“名称”中有空格外,一切正常。例如,如果我有一个名为“Coca-Cola”的名称,则当我键入“Coca”时,脚本会成功列出产品

我被要求向客户端站点添加一个小的AJAX特性。基本上我有一个MySQL表,有3个字段:

  • 身份证
  • 产品
  • 名字
该网站的理念是用户开始输入“名称”,产品在几下按键后就会显示出来。我的查询如下所示:

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

 }


}
$search=$\u GET['search'];
$ready_echead=array();
如果(!ereg(“[^A-Za-z0-9]”,$search)和&strlen($search)>2){
$query=mysql\u query(“从mytable中选择产品,名称类似“%”“$search.”%”;
if(mysql_num_rows($query)>0){
回应“建议:
    ”; while($product=mysql\u fetch\u数组($query)){ 如果(!在数组中($product['product'],已回送$U)){ $getProduct=mysql_查询(“从产品中选择名称,短名称,其中id=””。$product['product'].“”); $product2=mysql\u fetch\u数组($getProduct); 回音“
  • ”; $ready_回声[]=$product['product']; } } 回声“
”; } }

看起来您正在从允许的字符列表中排除空格。我不会说很多PHP,也不会被激怒去看文档。

我很确定我不相信会发生这样的事情<代码>'%Coca%'应与可口可乐相匹配。你确定没有其他处理程序在进行吗?您能打印出一个实际执行的示例查询吗?您是否尝试过手动运行该查询?要确定它是SQL还是其他东西?除了任何额外的编码,产品本身可能(极有可能)存储为
Coca\tCola
,甚至
Coca\r\nCola
。因此,也许您应该将任何非字母搜索字符串字符转换为
%
。ereg不久前就被弃用了
!ereg('[^A-Za-z0-9]', $search