Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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 带有IF条件的SELECT语句_Php_Mysql - Fatal编程技术网

Php 带有IF条件的SELECT语句

Php 带有IF条件的SELECT语句,php,mysql,Php,Mysql,我有一个表,它有列 menu_id , parent_id, controller , action , action_edit , action_view , select * from test where ( action like 'my_action.php' or action_edit like '%my_action.php%' or action_view like '%my_action.php%' ) AND parent_id !=0 ORDER BY `c

我有一个表,它有列

menu_id , parent_id, controller , action , action_edit , action_view , 


select * from test where  
( action like 'my_action.php' or 
action_edit like '%my_action.php%' or 
action_view like '%my_action.php%'
) AND parent_id !=0 ORDER BY `controller` ASC 
当action或action\u view或action\u edit为home.php->我想省略父\u id=0

我试着用

和IFaction='home.php'或action\u view='home.php'或action\u edit='home.php',家长=0,而不是和父\u id=0但它给了我一个令牌不匹配错误

但是不工作,提前谢谢你:

怎么样:

select * from test where  
(( action like 'my_action.php' or 
action_edit like '%my_action.php%' or 
action_view like '%my_action.php%'
)) AND (parent_id !=0)) 
ORDER BY `controller` ASC 

试着这样做:

select *
from test
where  'home.php' not in (action, action_view, action_edit) or parent_id <> 0) and
       (action like 'my_action.php' or action_edit like '%my_action.php%' or 
        action_view like '%my_action.php%'
       )
也许你想要这个

select * from test where  
(( action like 'my_action.php' or 
   action_edit like '%my_action.php%' or 
   action_view like '%my_action.php%'
 ) AND parent_id !=0)
OR 
( action='home.php' OR 
  action_view='home.php' OR 
  action_edit='home.php') 
ORDER BY `controller` ASC
试试这个:

SELECT * FROM test
  WHERE NOT EXISTS ((SELECT A.* FROM test A)
                   JOIN (SELECT B.* FROM test B WHERE 
                         B.action like 'my_action.php'
                         OR B.action_edit like '%my_action.php%'
                         OR B.action_view like '%my_action.php%')
                   ON A.parent_id !=0)
ORDER BY `controller` ASC

嗨,我终于有办法了

select * from test where  
( action like 'my_action.php' or 
action_edit like '%my_action.php%' or 
action_view like '%my_action.php%'
) AND parent_id !=0 ORDER BY `controller` ASC 
而不是家长id=0我用过

和IFaction='home.php'或action\u view='home.php'或action\u edit='home.php',parent=0,parent=0


现在开始工作了,谢谢你们的帮助。我发布了我的答案,因为我认为这将有助于解决类似问题的未来用户:

parent\u id=只有当action或action\u edit或action\u view为home.phpHi时,才应执行0行。您的代码工作:,但问题是action,action\u edit或action\u view可以为home.php,我要做的是在action为home.php时忽略父\u id 0,因为homep.hp的parant\u id=0,当我执行此查询时,当action为home.php时,结果为空:/action变量可以为NULL吗?action\u view和action\u edit可以为NULL,action不能为NULL
select * from test where  
( action like 'my_action.php' or 
action_edit like '%my_action.php%' or 
action_view like '%my_action.php%'
) AND parent_id !=0 ORDER BY `controller` ASC