严格的标准:只有变量应该通过引用传递

2022-04-20 00:00:00 standards php strict

我的PHP脚本显示错误:

Strict Standards: Only variables should be passed by reference in C:....*.php on line 551

代码如下:

function trinity_premissions()
{
        global $ACC_PDO, $WEB_PDO, $a_user, $db_translation;

        $end = false;

        $res = $WEB_PDO->prepare("SELECT acc_login, gmlevel FROM `accounts_more` WHERE UPPER(acc_login) = :acc");
/* 551 */$res->bindParam(':acc', strtoupper($a_user[$db_translation['login']]), PDO::PARAM_STR);
        $res->execute();

        if ($res->rowCount() == 1)
        {
                $s2 = $res->fetch(PDO::FETCH_ASSOC);
                if ($s2['gmlevel']<>'')
                {
                        return $s2['gmlevel'];
                }
        }
        unset($res);
}

我不知道问题出在哪里。有人能帮帮我吗?


解决方案

使用bindValue(),因为bindParam()第二个参数是引用 如

$res->bindValue(':acc', strtoupper($a_user[$db_translation['login']]));

如果要使用bindParam,则必须存储语句 转换为一个变量,并将该变量作为参数传递。喜欢。

$test = strtoupper($a_user[$db_translation['login']];
$res->bindParam(':acc', $test), PDO::PARAM_STR);

相关文章