首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按多个字段搜索,选择IN (everything)

按多个字段搜索,选择IN (everything)
EN

Stack Overflow用户
提问于 2019-11-28 21:28:03
回答 1查看 46关注 0票数 1

我想搜索一些产品并得到结果。这是我的PHP代码:

代码语言:javascript
复制
function Item_Search($AppID, $Keyword = '', $Wears)
{
    // expected $Wears = [1,0,1,0,1] , numbers can be diffrent from 0 to 1

    $WearNames = ['red', 'green', 'blue', 'yellow', 'black'];
    $FinalWear = [];

    foreach ($Wears as $i => $Wear) {
        if ($Wear == 1) {
            $FinalWear[] = $WearNames[$i];
        }
    }
    $FinalWear = json_encode($FinalWear);
    $FinalWear = str_replace(str_split('[]'), '', $FinalWear);

$ItemList = Query("SELECT * FROM items WHERE appid=$AppID 
AND name LIKE '%$Keyword%'
AND wear IN ($FinalWear)
");
}

这个代码工作得很好,但是有些产品没有任何颜色。在这种情况下,我想说,如果所有的颜色是1(真),然后显示产品也没有颜色。

所以我的问题是,我能不能在$FinalWear中加入wear IN ($FinalWear),这样我就能得到所有的结果了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-28 21:42:41

您可以接受$Wear中元素的和,如果它与计数相同,那么所有元素都会被设置。然后,您可以使用它将一个OR条件添加到wear测试中,在设置了$Wear中的所有元素时,在wear中检查一个空字符串:

代码语言:javascript
复制
function Item_Search($AppID, $Keyword = '', $Wears)
{
    // expected $Wears = [1,0,1,0,1] , numbers can be different from 0 to 1

    $WearNames = ['red', 'green', 'blue', 'yellow', 'black'];
    $FinalWear = [];

    foreach ($Wears as $i => $Wear) {
        if ($Wear == 1) {
            $FinalWear[] = $WearNames[$i];
        }
    }
    $FinalWear = "'" . implode("','", $FinalWear) . "'";
    $EmptyWear = array_sum($Wears) == count($Wears) ? "OR wear = ''" : '';

    $ItemList = Query(<<<EOD
SELECT * 
FROM items 
WHERE appid=$AppID 
  AND name LIKE '%$Keyword%'
  AND (wear IN ($FinalWear) $EmptyWear)
EOD
);
}

(查询输出的) 3v4l.org演示

请注意,如果$AppID$Keyword来自外部源,则查询容易受到SQL注入的影响,您应该使用准备好的语句来避免这种可能性。看这个问题

如果wear为空意味着它实际上是NULL,则将生成$EmptyWear的行更改为

代码语言:javascript
复制
 $EmptyWear = array_sum($Wears) == count($Wears) ? "OR wear IS NULL" : '';
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59096331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档