我有一个搜索功能,用户提供2个输入:$studies和$elements。我需要搜索数据库,这里有两个表:studies和studies\u elements。我想把这两个表连接起来,搜索函数在这两个表中找到了匹配的研究和元素。我的mysql查询应该是什么样子的?现在我有这个:
$studies = mysqli_real_escape_string($conn, $_POST['search-studies']);
$elements = mysqli_real_escape_string($conn, $_POST['search-elements']);
$sql = SELECT S.*, P.*
FROM studies S
LEFT JOIN studies_elements P
ON S.study_id = P.study_id
AND S.author LIKE '%$studies%' OR S.study_name LIKE '%$studies%' OR s.abstract LIKE '%$studies%'
AND P.first_element LIKE '%$elements%' OR P.second_element LIKE '%$elements%' OR P.third_element LIKE '%$elements%'
ORDER BY S.study_id
这段代码应该生成合并表,它确实生成了。但当 $elements
在数据库中找不到。例如,如果我将值'john'传递为 $studies
以及“交易成本” $elements
它给出的结果与我传递'john'和'bullshit'时完全相同,即使'bullshit'不在p.first\u元素、p.second\u元素或p.third\u元素中。我试过在不同的位置加上一些括号,但没有用。
我需要构造一个接受这两个输入的查询,检查它们是否可以在单个表中联接,然后检索该表。
1条答案
按热度按时间6qftjkof1#
在缺少或条件时使用括号(),这就是为什么它会给出所有结果的组合