我试图在用户输入课程名称时进行AJAX搜索调用...
到目前为止,我有以下问题:
我的数据库设计如下:
TABLE COURSE (
Subject VARCHAR,
Number CHAR(6)
)
MATH 101和BIOL 301B等课程存储为:
主题:数学,编号:101
主题:BIOL,编号:301B
现在问题出在PHP中,我按如下方式查询数据库:
SELECT * FROM COURSE WHERE Subject LIKE :subject AND Number LIKE :number
如果我在SELECT语句中使用AND
,那么如果用户还没有输入完整的课程标题,那么他就不会得到任何结果......
示例输入:数学
在这种情况下,我希望所有的MATH课程都能展示,但是因为我使用AND
他们赢了......
现在如果我使用OR
,那就是另一个问题;示例输入:math 200
这将返回任何编号为200的课程,这是不对的!
您如何建议我解决此问题?
我想到的一个解决方案是使用不同的函数来处理不同的搜索,然后合并结果......
答案 0 :(得分:1)
连接Subject
和Number
并以这种方式应用LIKE
:
SELECT * FROM `course`
WHERE CONCAT(`Subject`, ' ', `Number`) LIKE '%math%';
答案 1 :(得分:0)
您可以尝试在查询中连接列Subject
和Number
的值,然后在该连接字符串上应用LIKE
子句。
像这样:
SELECT * FROM `course` WHERE CONCAT(Subject, ' ', Number) LIKE ('%math%');