Мой 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);
}
Я не знаю, в чем проблема. Может кто-нибудь мне помочь?
Ваш второй параметр ‘strtoupper ($ a_user [$ db_translation [‘ login ‘]])’ должен быть ссылкой на переменную.
док: Ссылка на bindparam
смешанный &$ variable ‘в документе говорит, что это должна быть ссылка (это’&«)
Вы можете создать переменную и поместить в нее результат ‘strtoupper ($ a_user [$ db_translation [‘ login ‘]])’.
Например :
$foo = strtoupper($a_user[$db_translation['login']]);
$res->bindParam(':acc', $foo, PDO::PARAM_STR);
Надеюсь это поможет
использование 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);
Использование:
$param = strtoupper($a_user[$db_translation['login']]);
$res->bindParam(':acc', $param, PDO::PARAM_STR);