2013-10-19 69 views
1

我在數據庫中的user_privilege列如下:如何通過FIND_IN_SET搜索多個項目?

username  user_privilege 

a     7gz,agt_courses,newbill 

b     dataDisplay,previllige,newUsers 

c     newbill,dataDisplay,previllige 

我想搜索在user_privilege列中的每個值我每天FIND_IN_SET之間OR但正確的我做什麼不行?

我寫的PHP代碼:

ob_start(); 
session_start();   

    $username = $_POST['username']; 
      $username2 = $_POST['username2']; 
    $finduser = mysqli_query($link,"SELECT * FROM LOGIN 
     WHERE username='".$username."' AND username2='".$username2."' 
     AND FIND_IN_SET('7gz', user_previllige) OR FIND_IN_SET('agt_courses',user_previllige) OR FIND_IN_SET('newbill',user_previllige) OR FIND_IN_SET('new_Trainee',user_previllige)OR FIND_IN_SET('dataDisplay',user_previllige) OR FIND_IN_SET ('previllige',user_previllige) OR FIND_IN_SET('newUsers',user_previllige) OR FIND_IN_SET('Customers ',user_previllige)") 
     or die("error"); 

if(mysqli_num_rows($finduser) !=0) 
     { 

      while($row = mysqli_fetch_array($finduser)) 
       {$uname = $row['username']; 
       $uname2 = $row['username2']; 
       $arr=explode(",",$row['user_previllige']); 
       //if($arr=='dataDisplay'){echo 'yes';}//elseif($arr=='new_Trainee'){echo 'yes';} 
       } 

     } 

     if($username == $uname && $username2 == $uname2) 
      {$_SESSION['sessionname'] =$uname; 
      $_SESSION['sessionname2'] =$uname2; 
      $_SESSION['sessionpre'] =$arr; 
      header ("location:../agtSite/agt2 - Copy.php"); 
      //echo '<meta http-equiv="refresh" content="1" url="../agtSite/agt2 - Copy.php"/>'; 
      } 

      else echo 'اسم المستخدم غير موجود <a href="login.php"> اذهب للتسجيل مره اخري </a> '; 

} 
ob_end_flush(); 

,但它不工作的權利 是否有多個搜索任何解決方案?????

回答

0

看一看這個查詢:

SELECT 
    * 
FROM 
    LOGIN 
WHERE 
    username = 'a' 
    AND 
    (
      FIND_IN_SET('7gz' ,user_privilege) 
     OR FIND_IN_SET('agt_courses' ,user_privilege) 
     OR FIND_IN_SET('newbill' ,user_privilege) 
     OR FIND_IN_SET('new_Trainee' ,user_privilege) 
     OR FIND_IN_SET('dataDisplay' ,user_privilege) 
     OR FIND_IN_SET('previllige' ,user_privilege) 
     OR FIND_IN_SET('newUsers' ,user_privilege) 
     OR FIND_IN_SET('Customers' ,user_privilege) 
    ) 

與下面的測試表和測試數據進行測試。它的工作原理:

-- 
-- Table structure for table `login` 
-- 

CREATE TABLE IF NOT EXISTS `login` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `username` varchar(100) NOT NULL DEFAULT '', 
    `user_privilege` varchar(100) NOT NULL DEFAULT '', 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ; 

-- 
-- Dumping data for table `login` 
-- 

INSERT INTO `login` (`id`, `username`, `user_privilege`) VALUES 
(1, 'a', '7gz,agt_courses,newbill'), 
(2, 'b', 'dataDisplay,previllige,newUsers'), 
(3, 'c', 'newbill,dataDisplay,previllige'); 
+0

非常感謝很多很多很多:) – user2890838

+0

非常感謝很多很多:)它worked – user2890838

+0

@ user2890838很酷,沒問題。您可能想選擇我的答案。乾杯,... – Uours

0

您的腳本中有錯字。列名是user_privilege,並且您在查詢中使用了user_previllige

使用

$finduser = mysqli_query($link,"SELECT * FROM LOGIN 
     WHERE username='".$username."' AND username2='".$username2."' 
     AND FIND_IN_SET('7gz', user_privilege) OR FIND_IN_SET('agt_courses',user_privilege) OR FIND_IN_SET('newbill',user_privilege) OR FIND_IN_SET('new_Trainee',user_privilege)OR FIND_IN_SET('dataDisplay',user_privilege) OR FIND_IN_SET ('previllige',user_privilege) OR FIND_IN_SET('newUsers',user_privilege) OR FIND_IN_SET('Customers ',user_privilege)") 
     or die("error"); 
+0

好的,但我寫在我的文件中。問題出現在閱讀或錯誤,有些用戶去agt頁面。這是正確的閱讀是所有用戶進入agt頁面 – user2890838

+0

上面的文件中有一個錯字。你是指同一個文件或其他文件? – aaron

+0

好吧我編輯它,但不是這個問題。有問題在閱讀或錯誤,有些用戶去agt頁。這是正確的閱讀是所有用戶輸入agt頁 – user2890838