我正试图使用包含**的值来分隔不同的值,在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]."%')"

即使用户单独输入GS300GS3000GS 300**GS3000GS3000**GS 300

08-18 12:00