我正在研究以PHP/MySQL开发的问题管理系统。 它需要搜索功能,用户将提及搜索参数,并根据这些参数系统将返回结果集。使用函数自变量来动态生成查询
为了解决这个问题,我试图编写一个函数,所有用户选择的参数都作为参数传递。根据参数我将动态生成查询。有时(根据用户做出的选择)这些参数中的一个或多个参数可能为空。
示例查询:
select * from tickets inner join ticket_assigned_to on tickets.id=ticket_assigned_to.ticket_id where tickets.project_id= in ('') and tickets.status in ('') and ticket_assigned_to.user_id in ('') and tickets.reporter_user_id='' and tickets.operator_user_id in ('') and tickets.due_date between '' and '' and tickets.ts_created between '' and '';
我还需要处理这里的参数可以进行或运算或查询相与案件。
例如:
select * from tickets inner join ticket_assigned_to on tickets.id=ticket_assigned_to.ticket_id where tickets.project_id= in ('') and tickets.status in ('') or tickets.due_date = '' or tickets.ts_created between '' and '';
我还计划使用在其他地方同样的功能项目也。 喜欢显示用户的所有门票或在给定日期之间创建的所有门票等...
如何处理这种情况?
我应该用一个处理所有这些或许多小功能的函数吗? 这里需要指导。
即使删除了搜索功能从图片中,我仍然需要回答像.......这样的问题1.显示分配给我的所有问题,并且status ='open'或者2.在给定项目中创建的所有问题自l一个月分配给我,并打开...等等..所以我仍然需要有这些功能(S)。 – Varun 2010-03-24 07:51:04
Sphinx会在MySQL上进行全文搜索,因为他可以为索引列指定条件,MySQL适合在这里。大多数票务系统使用RDBMS,例如trac使用sqlite – 2010-03-24 10:27:52