首页 > 解决方案 > 将 LIKE 与多个 WHERE 子句一起使用

问题描述

我对 PHP 和数据库管理还很陌生,但我很快就学会了。我正在尝试创建一个搜索栏,我让搜索栏工作它只是不能完全返回我想要的结果。本质上,我想根据标题(名称)、副标题和发行日期在我的数据库中查找一部电影。这是我目前拥有的代码:

if(isset($_POST['search'])){
    $resultArray = '';
    $searchTerm = $_POST['searchTerm']; 
    if($getSearchResults = $conn->query("SELECT type, name, subtitle, release_date, poster_url, slug FROM media WHERE (name OR subtitle OR release_date) LIKE '%$searchTerm%' LIMIT 5")){   
        $resultArray = array();
        while($data = $getSearchResults->fetch_assoc()){            
            $resultArray[] = $data;                 
        }
    }else{
        echo 'No Data';
    }
    echo json_encode($resultArray); 
}

这(可能很明显)不起作用。如果该字段为空,则返回的搜索结果是所有没有字幕的电影,因为该字段为空。但是,如果我输入电影名称(例如复仇者联盟)或发布日期(例如 2018 年),则什么都不会出现。由于某种原因,它实际上只适用于空白字段?

最终,我希望您能帮助我返回结果,例如搜索词,我可以忍受它搜索空白字段,但如果您也有解决方案,那就太好了!

谢谢

标签: phpmysqlsql

解决方案


我相信您需要执行以下操作。

SELECT type, name, subtitle, release_date, poster_url, slug 
  FROM media 
    WHERE name LIKE '%$searchTerm%'
    OR subtitle LIKE '%$searchTerm%'
    OR release_date LIKE '%$searchTerm%'
LIMIT 5

推荐阅读