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

Php 我有严格的标准:只有变量应该通过引用传递,php,Php,严格标准:第54行的C:\xampp\htdocs\engine\server\u modules\trinity\character.php中只能通过引用传递变量 $res = $this->DB->prepare("SELECT guid, name, level, race, class, gender FROM `characters` WHERE `account` = :account ORDER BY level;"); $res->bindPar

严格标准:第54行的C:\xampp\htdocs\engine\server\u modules\trinity\character.php中只能通过引用传递变量

    $res = $this->DB->prepare("SELECT guid, name, level, race, class, gender FROM `characters` WHERE `account` = :account ORDER BY level;");
    $res->bindParam(':account', $CURUSER->get('id'), PDO::PARAM_INT); 
    $res->execute();

    if ($res->rowCount() > 0)
    {
        return $res;
    }
    else
    {
        return false;
    }
}

$res->bindParam(':account',$CURUSER->get('id'),PDO::PARAM_INT) 在执行
$res=$this->DB
之前,尝试将
$CURUSER->get('id')
保存到变量中

示例:首先调用
$test=$CURUSER->get('id')
,然后绑定
$test
变量:

$res->bindParam(':account', $test, PDO::PARAM_INT);

在这些行中缺少

这是正确的:

$test = $CURUSER->get('id');

$CURUSER->get('id')是一个方法调用(这里有点像函数调用)。函数返回值,但不是变量。严格的标准要求变量作为参数。因此,Adrian P的解决方案是先将函数结果赋给一个变量,然后使用该变量调用bindParam方法,这样效果会很好。当然,u_mulder的提示也可以,因为这个方法不要求变量在原始问题中,所以这不是答案。如果你对另一个答案有意见,你应该把它们作为意见放进去。