Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何通过在\u集中查找\u来搜索多个项目?_Php - Fatal编程技术网

Php 如何通过在\u集中查找\u来搜索多个项目?

Php 如何通过在\u集中查找\u来搜索多个项目?,php,Php,我在数据库中有一个user_privilege列,如下所示: username user_privilege a 7gz,agt_courses,newbill b dataDisplay,previllige,newUsers c newbill,dataDisplay,previllige 我想在用户权限列中搜索我在每个中使用的每个值,或者在每个在\u集合中查找\u中使用

我在数据库中有一个user_privilege列,如下所示:

username        user_privilege 

a                  7gz,agt_courses,newbill

b                 dataDisplay,previllige,newUsers

c                 newbill,dataDisplay,previllige
我想在用户权限列中搜索我在每个
中使用的每个值,或者在每个
在\u集合中查找\u
中使用的每个值,但我所做的不正确

我编写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();
ob_start();
会话_start();
$username=$_POST['username'];
$username2=$\u POST['username2'];
$finduser=mysqli_query($link,“从登录中选择*)
其中username='“$username.”和username2='“$username2.”
在集合中查找(“7gz”,用户预览)或在集合中查找(“agt”,用户预览)或在集合中查找(“newbill”,用户预览)或在集合中查找(“newUsers”,用户预览)或在集合中查找(“new\u培训生”,用户预览)或在集合中查找(“dataDisplay”,用户预览)或在集合中查找(“previllige”,用户预览)或在集合中查找(“newUsers”,用户预览)或在集合中查找(“客户”,用户(previllige)”)
或死亡(“错误”);
if(mysqli_num_行($finduser)!=0)
{
while($row=mysqli\u fetch\u数组($finduser))
{$uname=$row['username'];
$uname2=$row['username2'];
$arr=分解(“,”,$row['user\u previllige']);
//如果($arr=='dataDisplay'){echo'yes';}//elseif($arr=='new_trainer'){echo'yes';}
}
}
如果($username==$uname&&$username2==$uname2)
{$_SESSION['sessionname']=$uname;
$\会话['sessionname2']=$uname2;
$\会话['sessionpre']=$arr;
标题(“位置:../agtSite/agt2-Copy.php”);
//回声';
}
其他的回音是“不”或“不”的;
}
ob_end_flush();
但它不起作用
是否有多个搜索的解决方案????

您的脚本中有一个输入错误。列名是
user\u privilege
,您在查询中使用了
user\u previlige

使用


请查看此查询:

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');

好的,但是我在我的文件中写的是正确的。阅读中的问题是错误的,有些用户进入agt页面。正确的阅读是所有用户进入agt页面。上面的文件中有一个打字错误。你是指同一个文件还是其他文件?好的,我编辑了它,但这不是问题。阅读中的问题是错误的,有些用户转到agt页面。哪个是正确的读数是所有用户都进入agtpage@user2890838酷,没问题。你可能想选择我的答案作为选择。干杯。。。
--
-- 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');