我正试图使用包含**的值来分隔不同的值,在PHP中搜索我的数据库。我的数据库的一个例子是:
GS 300**GS3000系列
我想用GS 300或GS3000在数据库中搜索值。
我的剧本是:
$query = "SELECT DISTINCT(parts_cats.Part_Type) FROM parts_cats WHERE stock.Item_Specifics_Type IN ('$ids') AND stock.stock_item!='' and Make='$Make' AND Model LIKE '%" . mysql_real_escape_string($Model) . "%'"
目前,搜索对非双星号值(例如,如果搜索G3 500)工作良好,但对于GS 300**GS3000没有返回结果。
最佳答案
如果你想找到一个或另一个模式,你应该做(虽然非常昂贵)。我不知道**是什么以及你是如何在数据库中存储东西的。。。
"SELECT DISTINCT(parts_cats.Part_Type)
FROM parts_cats
WHERE stock.Item_Specifics_Type IN ('$ids')
AND stock.stock_item!='' AND Make='$Make'
AND ( Model LIKE '%" . mysql_real_escape_string($ModelOne) . "%'
OR Model LIKE '%" . mysql_real_escape_string($ModelTwo) . "%')"
或结果查询
SELECT DISTINCT(parts_cats.Part_Type)
FROM parts_cats
WHERE stock.Item_Specifics_Type IN ('$ids')
AND stock.stock_item!='' and AND='$Make'
AND ( Model LIKE '%GS 300%'
OR Model LIKE '%GS3000%')
编辑:
好的,我要做的是有一张桌子,上面有
id concatNames
并在其中包含类似于5, GS 300**GS3000
的条目。。然后得到用户输入的任何内容,然后使用我在上面写的查询。。你试过了吗?
您可以让用户输入如下字符串:
$str = "something**something2**something3";
然后可以使用
$array = explode("**",$str)
或者您可以有多个
<input>
s,用户可以将它们分开放置。无论哪种情况,您都有一个包含所有不同值的$array。。
然后动态地构造查询的WHERE部分
"AND (Model Like '%".$array[0]."%' OR Model Like '%".$array[1]."%' OR Model Like '%".$array[2]."%')"
即使用户单独输入
GS300
,GS3000
或GS 300**GS3000
或GS3000**GS 300