2013-05-27 46 views
1

我的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); 
} 

我不知道是什么问题。谁能帮我?

+0

可能重复(HTTP://计算器.COM /问题/ 2354609 /严格标准的,只有变量,应待通过按参考) –

回答

0

使用:

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

你的第二参数 'strtoupper($ a_user [$ db_translation [' 登录 ']])' 必须是对变量的引用。

DOC:Ref to bindparam

在doc的“混合& $变量”说,它必须是引用(它是“&”)

您可以创建一个变量,并把结果'strtoupper($ a_user [$ db_translation ['login']])'。 例如:

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

希望这有助于

2

use bindValue() because bindParam() second arg is a reference like

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

if you want to use bindParam then you have to store your statement into one variable and pass that variable as an argument. like.

$test = strtoupper($a_user[$db_translation['login']]; 
$res->bindParam(':acc', $test), PDO::PARAM_STR); 
[严格的标准:只有变量应该按引用传递]的
相关问题