I have a user_privilege column in database as the following :
username user_privilege
a 7gz,agt_courses,newbill
b dataDisplay,previllige,newUsers
c newbill,dataDisplay,previllige
I want to search for every value in user_privilege column I used OR
between every FIND_IN_SET
but doesn't work right what I do?
I write the php code:
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();
BUT it doesn't work right Is there any solution for multiple search ?????
you have a typo in your script. Column name is user_privilege
and you have used user_previllige
in your query.
Use
$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");
Have a look at this query :
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 )
)
Tested with the below test table and test data . It worked :
--
-- 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');
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.