我正在尝试写一个if stement
if(($result["from_id"] OR $result["to_id"]) == $_SESSION['user_id']) {
//DO SOMETHING
}
else {
// redirect
}
这是查明从某行获取的2列中的任何一列是否具有当前注册会话的相同值的正确方法。
这也可能吗?
if($result["from_id"] || $result["to_id"] == $_SESSION['user_id']) {
//DO SOMETHING
}
else {
// redirect
}
答案 0 :(得分:0)
不,在php中,您必须执行以下操作:
if ( in_array( $_SESSION['user_id'], array($result["from_id"], $result["to_id"]) ) )
或为每个条件编写单独的比较(在这种情况下为2,in_array
方法可以更好地扩展)。
如果结果来自mysql,您也可以直接使用IN
。
答案 1 :(得分:0)
如果设置了这些值,你的比较会评估为这样的......
if( (true || true) == $_SESSION['user_id']){ ... }
你需要具体比较......
if( $result["from_id"] == $_SESSION['user_id']|| $result["to_id"] == $_SESSION['user_id']){ ... }
所以你可以看到为什么第一套不会做你期望的。
但正如jeroen所说,您可能希望直接在查询中运行它。
SELECT * FROM `table` WHERE `from_id` = '$_SESSION['user_id']' OR `to_id` = '$_SESSION['user_id']'
除了明显地根据你正在使用的数据库界面正确地逃避这一点。