2016-03-01 30 views
-1

我在數據庫中有兩個不同的表:(1)userreg(2)admin。我想運行一個查詢,它將首先檢查userreg表,然後在管理表中查看。如果用戶在userreg表中找到,那麼它將重定向到index.php頁面,如果用戶在admin表中找到,那麼用戶將重定向到admin.php頁面。任何人都可以幫助我做到這一點?如何在單行中的多個表中運行多個查詢

$result = $conn->query("select * from userreg where email='$email' AND password = '$password'")||query("select * from admin where email='$email' AND password = '$password'"); 
    $row = $result->fetch_array(MYSQLI_BOTH); 
    if($row) 
    { 
     /// session_start(); 
     $_SESSION["fullname"] = $row['fullname']; 
     $_SESSION["email"] = $email; 
     $_SESSION["cellno"]= $row['cellno']; 
     $_SESSION["gender"]=$row['gender']; 
     $_SESSION["uid"]=$row['uid']; 
     $_SESSION['logged_in'] = true; 
     //header('Location: index.php'); 
     $URL="./index.php"; 
     echo '<META HTTP-EQUIV="refresh" content="0;URL=' . $URL . '">'; 

    } 
+0

使用,如果在查詢語句。 – Takarii

+0

另外,用戶是否也可以成爲管理員?請注意,在當前狀態下,您的代碼也可以使用SQL注入。 – Takarii

+0

運行查詢,檢查結果,如果結果爲空,則在另一個表中運行另一個查詢。沒有神奇的語法快捷方式。 – deceze

回答

0

最簡單的方式來處理,這將是你的用戶表標記允許註冊用戶標記爲管理員。但是,假設你不能修改表格,這段代碼應該有所幫助。

你可以用這個,因爲這將需要

IF (SELECT Count(*) FROM userreg WHERE email='$email' AND password='$password') = 1 

    THEN 
     SELECT *,1 as 'flag' FROM userreg where email='$email' AND password='$password' 
ELSEIF (SELECT Count(*) FROM userreg WHERE email='$email' AND password='$password') = 0 
    THEN 
     IF (SELECT Count(*) FROM admin WHERE email='$email' AND password='$password') = 1 
      THEN 
       SELECT *,2 as 'flag' FROM admin where email='$email' AND password='$password' 
     ENDIF 
ELSE SELECT 0 
ENDIF 

然後一個小的修改將數據返回到你的PHP代碼的單個查詢

$result = $conn->query(); 
    $row = $result->fetch_array(MYSQLI_BOTH); 
    if($row) 
    { 
     if ($row['flag'] = 0) 
     { 
     ///echo an error 
     } 
     else 
     { 
     /// session_start(); 
      $_SESSION["fullname"] = $row['fullname']; 
      $_SESSION["email"] = $email; 
      $_SESSION["cellno"]= $row['cellno']; 
      $_SESSION["gender"]=$row['gender']; 
      $_SESSION["uid"]=$row['uid']; 
      $_SESSION['logged_in'] = true; 
      //header('Location: index.php'); 
      if ($row['flag'] = 2) 
      { 
       $URL="./admin.php";    

      } 
      else 
      { 
       $URL="./index.php"; 
      } 
      echo '<META HTTP-EQUIV="refresh" content="0;URL=' . $URL . '">'; 

    } 

你需要充分認識到這樣做不保護SQL注入攻擊。您需要參數化查詢 - 請參考本SO發佈的信息,如何做到這一點How can I prevent SQL injection in PHP?

參考:MySQL Docs

+0

感謝您的友好評論,但第一部分中有一些syntex錯誤的代碼。我不明白它是什麼。不管怎麼說,還是要謝謝你。 – Nazmul