[英]how can I search for multiple items by FIND_IN_SET?
我在數據庫中有一個user_privilege列,如下所示:
username user_privilege
a 7gz,agt_courses,newbill
b dataDisplay,previllige,newUsers
c newbill,dataDisplay,previllige
我想搜索我在每個FIND_IN_SET
之間使用OR
user_privilege列中的每個值,但是不能正常工作嗎?
我寫了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();
但是它不能正常工作多重搜索有什么解決方案嗎?
您的腳本中有錯字。 列名稱為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");
看一下這個查詢:
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');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.