У меня есть таблица mysql с содержимым
структура находится здесь:
Теперь у меня есть одна запись:
Я хочу прочитать и распечатать содержимое этой таблицы в html. Это мой код:
<?php include("config.php"); $global_dbh = mysql_connect($hostname, $username, $password) or die("Could not connect to database"); mysql_select_db($db) or die("Could not select database"); function display_db_query($query_string, $connection, $header_bool, $table_params) { // perform the database query $result_id = mysql_query($query_string, $connection) or die("display_db_query:" . mysql_error()); // find out the number of columns in result $column_count = mysql_num_fields($result_id) or die("display_db_query:" . mysql_error()); // Here the table attributes from the $table_params variable are added print("<TABLE $table_params >\n"); // optionally print a bold header at top of table if($header_bool) { print("<TR>"); for($column_num = 0; $column_num < $column_count; $column_num++) { $field_name = mysql_field_name($result_id, $column_num); print("<TH>$field_name</TH>"); } print("</TR>\n"); } // print the body of the table while($row = mysql_fetch_row($result_id)) { print("<TR ALIGN=LEFT VALIGN=TOP>"); for($column_num = 0; $column_num < $column_count; $column_num++) { print("<TD>$row[$column_num]</TD>\n"); } print("</TR>\n"); } print("</TABLE>\n"); } function display_db_table($tablename, $connection, $header_bool, $table_params) { $query_string = "SELECT * FROM $tablename"; display_db_query($query_string, $connection, $header_bool, $table_params); } ?> <HTML><HEAD><TITLE>Displaying a MySQL table</TITLE></HEAD> <BODY> <TABLE><TR><TD> <?php //In this example the table name to be displayed is static, but it could be taken from a form $table = "submits"; display_db_table($table, $global_dbh, TRUE, "border='2'"); ?> </TD></TR></TABLE></BODY></HTML>
но я получаю ???????? как результаты: вот результат:
Где моя ошибка?
Четыре хороших шага, чтобы всегда правильно кодировать текст UTF-8:
1) Запустите этот запрос перед любым другим запросом:
mysql_query("set names 'utf8'");
2) Добавьте это в свой HTML-заголовок:
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3) Добавьте это в начало своего PHP-кода:
header("Content-Type: text/html;charset=UTF-8");
4) Сохраните файл с UTF-8 without BOM
кодировки UTF-8 without BOM
с помощью Notepad ++ или любого другого хорошего текстового редактора / IDE.
Вы не определяете свою HTML-страницу как UTF-8. Посмотрите на этот вопрос о том, как это сделать.
Вам также может потребоваться прямое подключение к базе данных для UTF8. Выполнение
mysql_query("SET NAMES utf8;");
^ Положите это прямо под свой сценарий подключения к базе данных или включите, а MAKE убедитесь, что вы разместили его перед выполнением любых необходимых запросов. Кроме того, для коллокации, пожалуйста, найдите время, чтобы убедиться, что его настройка для вашего правильного типа синтаксиса и general_ci кажется мне полезной при использовании. Как финал, очистите свой кеш после удара головой, установите для браузера правильную кодировку -> view-> encoding
Установка связи с UTF8 после установления соединения позаботится об этой проблеме. Не делайте этого, если первый шаг уже работает.
Установите кодировку как utf8 следующим образом:
$conn = new mysqli($servername, $username, $password, $dbname); $conn->set_charset("utf8");
попробуй это :
mysql_set_charset('utf8', $yourConnection);
Старые способы устарели. Если вы используете PHP> 5.0.5 и с помощью mysqli новый синтаксис теперь:
$connection->set_charset("utf8")
Где $connection
– ссылка на ваше соединение с БД.