Вставка латинских символов в mysql с использованием php?

0

У меня есть база данных, которая содержит латинские символы, такие как á, é, ç и т.д. Я могу вставлять кортежи с этими символами, используя интерфейс администратора 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 как кодировку базы данных.

Заранее благодарю вас за любую помощь.

Теги:

1 ответ

1

Сначала настройте сортировку строк таблицы в 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();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню