Здравствуйте. Начал изучать MySQL и столкнулся с такой проблемой.
Русский текст извлеченный из БД отображается как куча таких вопросов ���
С цифрами и английским текстом все в порядке.
Кодировки там и там одинаковые UTF-8. В чем может быть проблема
P.S.: Делаю все на денвере
Вот скрипты
CODE ( html):
скопировать код в буфер обмена
<!DOCTYPE html> <html> <head> <title>Книжный магазин - Поиск</title> </head> <body> <h1>Книжный магазин -Поиск</h1> <form action="results.php" method="post"> Выберети критерий поиска: <br/> <select name="searchtype"> <option value="author">По Автору</option> <option value="title">По названию</option> <option value="isbn">По ISBN</option> </select> <br/> Ведите информацию для поиска:<br/> <input type="text" name="searchterm"/><br/> <input type="submit" name="submit" value="Найти"/> </form> </body> </html>
results.php
PHP:
скопировать код в буфер обмена
<html> <head> <title>Книжный магазин - Поиск</title> <meta content="text/html; charset=utf-8" /> </head> <body> <h1>Книжный магазин -Поиск</h1> <?PHP $searchtype = $_POST['searchtype']; $searchterm = $_POST['searchterm']; if (!$searchtype || !$searchterm){ echo 'Не ввели параметры поиска. <br/> Вернитесь обратно и повторите попытку'; } @ $db = new mysqli('localhost', 'tim', 'tim', 'books'); echo 'Произошла ошибка при подключении к БД'; } $query = "SELECT * FROM books WHERE ".$searchtype." like '%".$searchterm."%'"; $result = $db->query($query); $num_results = $result->num_rows; echo "<p>Найдено книг: ".$num_results."</p>"; for ($i = 0; $i < $num_results; $i++){ $row = $result->fetch_assoc(); echo "<p><strong>".($i+1).". Название: "; echo " Автор: "; echo " ISBN: "; echo " Цена: "; echo "</p>"; } $result->free(); $db->close(); ?> </body> </html>
Так же поиск выполняется правильно если ищу по ISBN если ищу по названию или автору (русскому), ничего не находит, хотя такие книги в БД присутствуют, а вот аглийскими находит. Это скорее всего связано с кракозябрами
|