Я только что прошел ту же проблему и нашел хорошее решение в руководствах PHP.
Я изменил всю свою кодировку файла на UTF8, а затем по умолчанию на мое соединение. Это решило все проблемы.
if (!$mysqli->set_charset("utf8")) {
printf("Error loading character set utf8: %s\n", $mysqli->error);
} else {
printf("Current character set: %s\n", $mysqli->character_set_name());
}
Ваш второй параметр 'strtoupper ($ a_user [$ db_translation [' login ']])' должен быть ссылкой на переменную.
doc: Ссылка на bindparam
'mixed & amp; $ variable' в документе сообщает, что он должен быть ссылкой (это '& amp;')
, вы можете создать переменную и поместить результат 'strtoupper ($ a_user [$ db_translation [' login ']])' в него. Например:
$foo = strtoupper($a_user[$db_translation['login']]);
$res->bindParam(':acc', $foo, PDO::PARAM_STR);
Надеемся на эту помощь
use bindValue () потому что bindParam () второй arg является ссылкой, например
blockquote>$res->bindValue(':acc', strtoupper($a_user[$db_translation['login']]));
, если вы хотите использовать bindParam, тогда вам нужно сохранить ваше утверждение в одну переменную и передать эту переменную в качестве аргумента. например.
blockquote>$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);