关于AND AND OR的MySQL帮助

时间:2015-06-24 13:41:36

标签: php mysql

一些快速帮助..我想要做的是:

如果'X'大于或等于100且用户已登录,请执行“代码”,但仅限于user_id为1或2时。

下面的代码是代表吗?由于OR,我不确定.. OR是否适用于最后一个AND或完整查询?我怎样才能简化/纠正代码?

if($data['x'] >= 100 AND $_SESSION['user_logged'] = 1 AND $data['user_id']
== 1 OR $data['user_id'] == 2)

3 个答案:

答案 0 :(得分:3)

代码的这一部分AND $_SESSION['user_logged'] = 1

您使用一个等号进行分配,而不是使用两个(或三个)进行比较。

所以:

AND $_SESSION['user_logged'] == 1

并确保您已开始会话。这意味着session_start();使用sessions在您的页面内(全部)。

旁注:&&优先于AND||优先于OR

参考文献:

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:错误报告应仅在暂存时完成,而不是生产。

答案 1 :(得分:1)

您在if语句中出现错误,其中您将$_SESSION['user_logged']的值指定为1.我在您的代码中修复了该错误,并且还将您的AND语句包含在括号中您需要满足前三个条件或满足最后一个条件并实现您想要使用括号

if(
    ($data['x'] >= 100
    AND $_SESSION['user_logged'] == 1
    AND $data['user_id'] == 1)
    OR $data['user_id'] == 2
) 

答案 2 :(得分:0)

if(
($data['x'] >= 100  
  AND $_SESSION['user_logged'] ==1 ) 
  AND ($data['user_id']== 1 || $data['user_id'] == 2))
{
// do something
}