我正在研究以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