-1

以下にリストされている21のフィールドを持つMySQLにデータベースがあります

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

それは単純な SQL です:

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

type のすべてのフィールドをint引用符 ( " " ) で囲んではならないことに注意してください。

于 2013-04-09T06:57:22.277 に答える
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'"

クエリでは、それらの基準のみが追加され、それ以外の場合は無視されます。もう 1 つのことは、各 IF 条件の後に AND 演算子を追加しているため、クエリの最後に 1 つの条件を追加する必要があるため (条件のユーザー ステータスを設定したり、ステータスを削除したりできます)、クエリでエラーが発生しないようにすることです。

于 2013-04-09T06:59:45.727 に答える