Форум программистов, компьютерный форум, киберфорум
Наши страницы

PHP: базы данных

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 83, средняя оценка - 4.60
Стайер
8 / 8 / 0
Регистрация: 28.12.2010
Сообщений: 96
#1

Запись данных в MySQL с русской кодировкой. - PHP БД

14.08.2011, 16:51. Просмотров 11256. Ответов 4
Метки нет (Все метки)

Что надо настроить или указать в коде, чтобы символы русской кодировки сохранялись корректно в базе?
Мой php файл в формате utf-8. В свойства поля таблицы : Сравнение - utf8_bin, Тип - VARCHAR.
При записи данных в базу через скрипт русские символы сохраняются как знаки вопроса.
Вот код
PHP
1
2
3
4
5
6
7
8
9
10
11
$firstName = $_POST['firstname'];
$secondName=$_POST['secondname'];
$email = $_POST['email'];
$query="insert into sportsmans values('$secondName','$firstName','$email',null)";
$conn = mysql_connect('localhost','root','VCh3005');
mysql_select_db('Competition');
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
mysql_query($query);
mysql_error();
mysql_close();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2011, 16:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запись данных в MySQL с русской кодировкой. (PHP БД):

Занос данных через php с русской кодировкой - PHP БД
Здравствуйте проблема с заносом данных через php с русской кодировкой всё также сделал 1) Кодировка странички в UTF8; 2) В метатеге...

Где ошибка? (Запись данных из массива в базу данных mysql) - PHP БД
Массив, генерирующий данные: $data = array(); for($i = 0; $i < 100; $i++){ $data = array( 'name' ...

Запись данных в MySQL - PHP БД
Не записываются данные в базу <h2 align="center">Оформление заказа</h2> <? if($_SESSION && !isset($_POST)) { ?> <form...

Запись и вывод данных из mysql - PHP БД
Как реализовать подобную вещь Имеется текстовое поле, в которое вписывается любой набор символов. После чего нажимается кнопка...

запись данных из php в mysql - PHP БД
Привет форумчане! Как с php записать данные в базу mysql?. Я вотнаписал код а так не работает, скажите где ошибка <?php $text = ...

Запись в Базу данных MySQL - PHP БД
<html> <head> <title>Формы PHP</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> ...

4
Xander Bass
Йошь-мыслитель
121 / 115 / 6
Регистрация: 22.02.2009
Сообщений: 670
Записей в блоге: 5
15.08.2011, 05:05 #2
Стайер, должно быть UTF-8 General. Это во-первых. Во-вторых, скажите, зачем Вы совершаете кучу ненужных действий и запросов? Например так:
Цитата Сообщение от Стайер Посмотреть сообщение
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
Цитата Сообщение от Стайер Посмотреть сообщение
mysql_error();
mysql_close();
В то время, когда можно сделать проще:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if ($_connect = @mysql_connect('','root','VCh3005'))
{
 if (mysql_select_db('Competition',$_connect))
 {
  if ($_result = mysql_query($_query,$_connect))
  {
// Здесь разбираемся с результатом
  } else {
// Действия при ошибке в запросе
  }
 } else {
// Действия при ошибке поиска БД
 }
} else {
// Действия при ошибке подключения к БД
}
В-третьих, где проверка входных данных? Почитайте про SQL-инъекции.
1
Стайер
8 / 8 / 0
Регистрация: 28.12.2010
Сообщений: 96
16.08.2011, 18:59  [ТС] #3
Цитата Сообщение от Xander Bass Посмотреть сообщение
Стайер, должно быть UTF-8 General. Это во-первых. Во-вторых, скажите, зачем Вы совершаете кучу ненужных действий и запросов? Например так:


В то время, когда можно сделать проще:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if ($_connect = @mysql_connect('','root','VCh3005'))
{
 if (mysql_select_db('Competition',$_connect))
 {
  if ($_result = mysql_query($_query,$_connect))
  {
// Здесь разбираемся с результатом
  } else {
// Действия при ошибке в запросе
  }
 } else {
// Действия при ошибке поиска БД
 }
} else {
// Действия при ошибке подключения к БД
}
В-третьих, где проверка входных данных? Почитайте про SQL-инъекции.
Спасибо за поправки!
Я только начал пробовать, что-то делать на php. Делал по примеру. Может книгу посоветуете, где хорошо работа с СУБД описывается.

Добавлено через 15 минут
P.S А что закрывать соединение mysql_close() не обязательно?

Добавлено через 20 часов 25 минут
Цитата Сообщение от Xander Bass Посмотреть сообщение
Стайер, должно быть UTF-8 General. Это во-первых. Во-вторых, скажите, зачем Вы совершаете кучу ненужных действий и запросов? Например так:
Цитата Сообщение от Стайер Посмотреть сообщение
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
У меня без этих запров строки кракозябрами в базу записываются, хотя в сравнении "utf8_general_ci" указано.
0
Xander Bass
Йошь-мыслитель
121 / 115 / 6
Регистрация: 22.02.2009
Сообщений: 670
Записей в блоге: 5
17.08.2011, 07:44 #4
Цитата Сообщение от Стайер Посмотреть сообщение
У меня без этих запров строки кракозябрами в базу записываются, хотя в сравнении "utf8_general_ci" указано
Нужно, чтобы uft-8 была везде, в том числе и в html-документе. Притом необходимо, чтобы она там была не только формально в виде метатегов, но и фактически (Проверяется в любом нормальном браузере).
1
Стайер
8 / 8 / 0
Регистрация: 28.12.2010
Сообщений: 96
17.08.2011, 11:56  [ТС] #5
Так дело в том, что у меня так и есть!
1) Кодировка странички в UTF8;
2) В метатеге указано, что UTF8;
HTML5
1
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
3) В сравнении свойства поля стоит "utf8_general_ci";
4)В свойствах базы и таблицы тоже указано "utf8_general_ci"
А кракозябры всё равно не уходят без
PHP
1
2
mysql_query("SET NAMES 'utf8'");
 mysql_query("SET CHARACTER SET 'utf8'");
Вот мой sql файл создания базы
SQL
1
2
3
4
5
6
7
8
9
10
CREATE DATABASE `competition` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `competition`;
 
CREATE TABLE IF NOT EXISTS `sportsmans` (
  `SecondName` VARCHAR(15) COLLATE utf8_general_ci NOT NULL,
  `FirstName` text COLLATE utf8_general_ci NOT NULL,
  `Email` text COLLATE utf8_general_ci NOT NULL,
  `idSportsmen` INT(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`idSportsmen`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci AUTO_INCREMENT=20 ;
И как насчёт закрытия соединения? Его не обязательно закрывать?
0
17.08.2011, 11:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2011, 11:56
Привет! Вот еще темы с ответами:

Вывод данных и запись обратно в MySQL - PHP БД
Такая проблемка, хочу сделать вывод данных из базы данных в таблицу, после чего в таблице можно будет отредактировать данные и при нажатии...

[PHP+MySQL] Запись в базу данных из формы - PHP БД
Здравствуйте! Помогите, пожалуйста, решить проблему с записью. В базу строка добавляется, но она пустая. Не могу понять, в чем дело. ...

PHP+MySQL не работает запись данных БД из формы - PHP БД
Возникла такая проблема. Имеется страница с формами. Введенные данные в формах должны записываться в базу данных. Но при проверке выдает...

MySQL Построчная запись текста из <textarea> в базу данных MySQL - PHP БД
Помогите! Есть код: HTML: &lt;formaction=&quot;adminpex.php&quot;type=&quot;post&quot;&gt;&lt;b&gt;Выберите город&lt;/b&gt;&lt;br&gt;&lt;select name=&quot;id&quot;&gt; &lt;option&gt;Выберите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru