Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.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
mysql/php搜索标记引擎_Php_Mysql_Search - Fatal编程技术网

mysql/php搜索标记引擎

mysql/php搜索标记引擎,php,mysql,search,Php,Mysql,Search,我得到了两辆摩托车的数据库: 雅马哈R1白色2000和 雅马哈R125白色2005 当我发送查询时: SELECT * FROM bikes WHERE title LIKE '%$search%' 然后当我搜索“雅马哈R125”时,一切正常,但当你搜索“雅马哈R1”时 然后您将得到两个结果雅马哈R1和雅马哈R125 任何人都可以指定他们想要的标题,所以标题可以是“雅马哈R1白色2005”,但也可以是 “雅马哈R1品质卓越” 知道如何分类吗?为什么要使用like子句,请使用title=$s

我得到了两辆摩托车的数据库:

  • 雅马哈R1白色2000和
  • 雅马哈R125白色2005
当我发送查询时:

SELECT * FROM bikes WHERE title LIKE '%$search%'
然后当我搜索“雅马哈R125”时,一切正常,但当你搜索“雅马哈R1”时 然后您将得到两个结果雅马哈R1和雅马哈R125

任何人都可以指定他们想要的标题,所以标题可以是“雅马哈R1白色2005”,但也可以是 “雅马哈R1品质卓越”


知道如何分类吗?

为什么要使用like子句,请使用title=$search

SELECT * FROM bikes WHERE title='$search'

尝试此
SELECT*FROM bikes,其中title='$search'

如果你只想要一个结果

Like子句用于通配符搜索。如果使用%sign,则将其作为通配符搜索


查看以下链接以了解更多有关

的信息此处的问题是$search值:

SELECT * FROM bikes WHERE title LIKE '%$search%'
有了这个,你就可以尝试搜索那些等同于“任何东西+$search+任何东西”的标题

由于您正在搜索
%yamaha R1%
,结果如下:

yamaha R1 white 2000, yamaha R125 white 2005
这里的问题是:如果您使用
'%search'
它将不起作用,因为您的末尾是“白色2000”,为什么不在表的另一个字段中设置颜色和数字,然后像这样搜索它:

SELECT * FROM bikes WHERE title LIKE '$search'

这将返回雅马哈R1的所有信息,其中一个字段的颜色为“白色”,另一个字段的数字为“2000”

MySQL将无法理解,只要您使用LIKE。只有两种解决方案:-

1. Either segregate model and color from that single field and keep it in separate field 

2. SELECT * FROM bikes where title like 'yamaha R1%' AND title like '%2000';
如果这些都没用的话

然后,我不确定在基本Mysql中不改变模式、用户输入等是否可行

如果您使用的是专用服务器,或者有一个非常好的web主机,我碰巧知道Sphinx搜索引擎可以按照您的要求工作。

这就是您想要的:

SELECT * FROM bikes WHERE  title REGEXP '[[:<:]]$search[[:>:]]' = 1;
SELECT*FROM bikes,其中title REGEXP'[[::]]'=1;

当您搜索雅马哈R1时,是否只希望雅马哈R1作为结果?是的,我只希望雅马哈R1的结果在这种情况下只有一个,请检查下面的答案,为什么不在查询后添加空格
如“%$search%”
这不起作用,例如,让我们说搜索:“白色雅马哈R1”,但标题看起来像“yahama R1白色2000”当我输入“雅马哈R1”不是完整的标题时,还是刚刚开始。基本上,任何人都可以输入他们想要的标题,所以可以是“品牌知道雅马哈R1 2010一个车主”,然后是更复杂的,如果人们只知道车的型号和年份,这将起作用,但当有人输入“品牌知道雅马哈R1 2010一个车主”时,这将不起作用(“选择*FROM bikes,其中title REGEXP'[[::]]'=1;”;给出“警告:mysql_fetch_array()希望参数1是资源,布尔值在中给出”