php - 将 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 年),则什么都不会出现。由于某种原因,它实际上只适用于空白字段?
最终,我希望您能帮助我返回结果,例如搜索词,我可以忍受它搜索空白字段,但如果您也有解决方案,那就太好了!
谢谢
解决方案
我相信您需要执行以下操作。
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