【问题标题】:PHP Exception: multi-operatorsPHP 异常:多运算符
【发布时间】:2015-09-10 13:20:46
【问题描述】:

我尝试从我的数据库中获取用户级别,并检查用户的级别。当我尝试这样做时:

include "../web/config.php";
            $adminTrueQuery = mysql_query("SELECT * FROM `users` WHERE `Username` = '$admin_username' AND `Password` = '$admin_password' LIMIT 1;");
            $adminLevel = mysql_fetch_array($adminTrueQuery);
            $adminLevel = $adminLevel['Level'];
            if($adminLevel !== "c" || "b") {
                throw new Exception ("You don't admin {$adminLevel}"); // return
            }

我得到一个错误。和

$adminLevel = "c";

什么问题?

【问题讨论】:

    标签: php exception if-statement comparison-operators


    【解决方案1】:

    这不是 PHP 中多重比较的工作方式。您需要根据原始值检查这两个值:

    if($adminLevel !== "c" && $adminLevel !== "b") {
    

    或者,如果您有很多值要检查,请使用in_array()

    if(!in_array($adminLevel, ['b','c'])) {
    

    $adminLevel = "c"; 不起作用,因为= 是赋值运算符而不是比较运算符。如果您尝试比较类型的值与真实值(您的值确实如此)进行比较,那将始终返回 true。

    【讨论】:

    • 是的。再试一次。如果需要,请复制和粘贴。
    • 也许你的意思是if($adminLevel !== "c" && $adminLevel !== "b") {
    • @AndreaGhidini 你在我编辑时写下了你的评论
    • @JohnConde 关于您的数组,in_array() 函数无法选择一些值 ['b', 'c'].. 它仅适用于 array() 或包含 array('b', 'c') 的 var。感谢经验丰富的帮助:)
    • @AndreaGhidini 我有点困惑;)谢谢!
    猜你喜欢
    • 2013-07-29
    • 2015-11-15
    • 2014-02-21
    • 2020-05-10
    • 2015-03-11
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多