У меня есть база данных, которая содержит латинские символы, такие как á
, é
, ç
и т.д. Я могу вставлять кортежи с этими символами, используя интерфейс администратора MySQL, записывая там инструкции вставки SQL. Я также могу читать и отображать их без каких-либо проблем. Но я не могу правильно вставлять новые данные с помощью PHP.
$mysqli = new mysqli("localhost", "root", "", "budgets");
$data = mysqli_real_escape_string($mysqli, "bananá");
$stmt = $mysqli->prepare("INSERT INTO items(id_budget, description, unit_price, quantity) VALUES (1, ?, 3, 3);");
$stmt->bind_param("s", $data);
$stmt->execute();
Я прочитал несколько потоков, предлагающих использовать mysqli_real_escape_string()
и убедившись, что кодировки настроены правильно, но ничего не mysqli_real_escape_string()
.
Я попытался с помощью различных кодировок в базе данных, но á
всегда сменяется странными символами. В настоящее время я использую utf8_general_ci
как кодировку базы данных.
Заранее благодарю вас за любую помощь.
Сначала настройте сортировку строк таблицы в utf8_unicode_c
И добавьте $mysqli->set_charset("utf8");
к вашему коду подключения
Окончательный код должен выглядеть следующим образом:
$mysqli = mysqli_connect(HOST_NAME,DB_USER,DB_PASS,DB_NAME);
if($mysqli === false) {
die("Something was wrong ! Please try again later."); // Error if connection not ok.
}
$mysqli->set_charset("utf8");
$data = "bananá";
$stmt = $mysqli->prepare("INSERT INTO items(id_budget, description, unit_price, quantity) VALUES (1, ?, 3, 3);");
$stmt->bind_param("s", $data);
$stmt->execute();
$stmt->close();
$mysqli->close();