Невозможно обновить столбец с соответствующей кодировкой

Я испытываю огромную проблему с кодировкой, а точнее с записями в моей базе данных. Когда я вставляю данные, символы отображаются правильно. Однако, когда я пытаюсь обновить столбец, символы неправильно читаются в одном из них: авдвадва, В то же время, когда я вставляю новые строки, данные в phpMyAdmin выглядят так: Кон,

<form action="addItem.php" method="post">
<p>
<label class='title' for="title"> Title</label>
<input type="text" name="title" id="title" class="input"/>
</p>

<p>
<label class='description' for="description"> Description</label>
<textarea name="description" id="description" rows="10" cols="35"></textarea>
</p>

<p>
<input type="submit" class='buttono' name="addEntry" id="addEntry" value="Add New Entry" />
</p>
</form>

Это мое db.php

<?php

class Db {

public $mysql;

function __construct() {
$this->mysql = new mysqli('localhost', 'root', 'password', 'to-do') or die("Unable to connect to database");
}

function delete_by_id($id) {
$query = "DELETE from todo WHERE id = $id";
$result = $this->mysql->query($query) or die("There was a problem");
}

function update_by_id($id, $description) {
$query = "UPDATE todo
SET description = ?
WHERE id = ?";

if ($stmt = $this->mysql->prepare($query)) {
$stmt->bind_param('si', $description, $id);
$stmt->execute();
}
}

}

Это мое addItem.php

<?php

require 'db.php';
$db = new Db();

if (isset($_POST['addEntry'])) {
$query = "INSERT INTO todo VALUES ('', ?, ?)";

if ($stmt = $db->mysql->prepare($query)) {
$stmt->bind_param('ss', $_POST['title'], $_POST['description']);
$stmt->execute();
header('Location: index.php');
}

} else {
die ($db->mysql->error);
}

Что с этим не так? Я пытался установить кодировку UTF-8 до того, как запрос будет выполнен, но он все тот же (на самом деле это не проблема).

0

Решение

Вы должны установить кодировку подключения mysql на UTF-8. Вы можете использовать $ mysql-> set_charset («utf8») следующим образом:

<?php

class Db {

public $mysql;

function __construct() {
$this->mysql = new mysqli('localhost', 'root', 'password', 'to-do') or die("Unable to connect to database");
if (!$this->mysql->set_charset("utf8")) {
throw new Exception("Error loading character set utf8: " .  $this->mysql->error);
}

}

function delete_by_id($id) {
$query = "DELETE from todo WHERE id = $id";
$result = $this->mysql->query($query) or die("There was a problem");
}

function update_by_id($id, $description) {
$query = "UPDATE todo
SET description = ?
WHERE id = ?";

if ($stmt = $this->mysql->prepare($query)) {
$stmt->bind_param('si', $description, $id);
$stmt->execute();
}
}

}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]