Я искал ответ пару дней и пока не нашел ответа ...
Я создаю веб-сайт для клиента и использую базу данных MySQL для храненияДанные для меню, и я использую PHP mysqli подготовил операторы для работы с базой данных.Когда я использую форму для обновления или добавления строк, специальные символы вставляются неправильно, акцентированные символы «é» становятся Ã © при отправке.Хотя, если я введу их вручную через phpMyAdmin, они будут отображаться очень хорошо.
Мне немного повезло, добавив это после объекта $ mysqli, как рекомендуется здесь
$mysqli -> set_charset( "utf8" );
Это толькоПохоже, что он работает с командами обновления и вставки, все, что выбрано, теперь показывает «авторское право tilda A» вместо акцентированных e, так что это в основном та же проблема, но в обратном порядке.PHP, на который влияют:
$mysqli = new mysqli( "localhost", "user", "pass", "db" );
$mysqli -> set_charset( "utf8" );
if( $_GET['mode'] == "edit" && $_GET['drink'] && $_POST['e_name'] ) {
$update = "update `menu` set `name` = ?, `description` = ?, `small` = ?, `medium` = ?, `large` = ?, `flavors` = ?, `section` = ?, `order` = ? where `id` = ?;";
$id = $_GET['drink'];
$nName = $_POST['e_name'];
$nDesc = $_POST['e_desc'];
$nSml = $_POST['e_prc1'];
$nMed = $_POST['e_prc2'];
$nLrg = $_POST['e_prc3'];
if( $_POST['e_flav'] == "on" )
$nFlv = 1;
else
$nFlv = 0;
$nSect = $_POST['e_sect'];
$nOrd = $_POST['e_ordr'];
if( $changeIt = $mysqli -> prepare( $update ) ) {
$changeIt -> bind_param( 'ssdddiiii', $nName, $nDesc, $nSml, $nMed, $nLrg, $nFlv, $nSect, $nOrd, $id );
$changeIt -> execute();
}
header( "Location: http://stackoverflow.com/" );
exit;
}
$mysqli -> close();