-1

我在 MySQL 中有数据库,下面列出了 21 个字段

Field Name  Data Type       NULL
status      text        No           
roll_no     text        No           
branch_id       int(5)      No           
student_name    text        No           
father_name     text        No           
phone1      text        No           
phone2      text        No           
email       text        No           
dob         date        No           
city        text        No           
course_id       varchar(5)  No           
class_id        int(2)      No           
program     text        No           
duration        text        No           
comment     text        No           
admission_year  int(4)      No           
admission_date  text        No           
entryby     text        No           
address     text        No           
admission_no    int(4)      No
fees        int(6)      No

现在我被搜索过程困住了,我有点困惑,我该如何搜索不同类型的条件/标准

条件组合的几个例子

  1. 只有 city=3 的那些记录
  2. 只有那些 branch_id=2
  3. 只有那些 admission_year='2013'
  4. 只有那些 course_id='15'
  5. 只有那些 branch_id='2' AND course_id='15'
  6. 只有那些 branch_id='2' AND course_id='15' AND city LIKE 'XYZ'
  7. 只有admission_year='2012' AND course_id='10' AND duration BETWEEN(2 AND 3)
  8. 只有那些 branch_id=2 AND course_id='15' AND student_name LIKE 'XYZ'
  9. 只有那些 course_id=7 AND class_id=2 AND Father_name LIKE 'XYZ'

我的 search.php 表单页面已设计,我在这里上传了表单设计的图像,但我很困惑如何针对不同情况实现此搜索选项。

请给我一些指导并告诉我解决此问题的正确方法。

4

2 回答 2

0

这很简单。您可以执行以下操作:

$search = "";
if(isset($records_of_city) && $records_of_city != "")
  $search .= "records_of_city = 3 AND";
if(isset($branch_id) && $branch_id != "")
  $search .= "branch_id = 3 AND";

if(isset($admission_year) && $admission_year != "")
  $search .= "admission_year = 3 AND";
// Continue till all search criteria are appended to $search
// And at the end

$query = "SELECT * from tableName where $serach active_status = 'active'"

在查询中,只有那些具有某些值的条件才会被附加,否则将被忽略。另一件事是我们在每个 IF 条件之后添加 AND 运算符,因此您需要在查询末尾添加一个条件(您可以设置条件用户状态、删除状态等),这样查询就不会出现任何错误。

于 2013-04-09T06:59:45.727 回答
0

这只是简单的 SQL:

SELECT * FROM mytable WHERE city="3" AND branch_id=2 AND admission_year=2013 ...

请注意,所有类型的字段都int不能有引号(“”)。

于 2013-04-09T06:57:22.277 回答