PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (2): [1] 2 »

> Найдено сообщений: 21
Inferial Отправлено: 18 Октября, 2015 - 18:39:11 • Тема: Иероглифы в БД • Форум: Вопросы новичков

Ответов: 9
Просмотров: 387
andrewkard пишет:
чем смотрите, данные видимо сохраняются как раз в UTF-8, но отображаются в WIN-1251?


В самой Mysql, скрин прилагаю.
(Добавление)
В проблеме разобрался, правильный запрос:
PHP:
скопировать код в буфер обмена
  1. $conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'' ));
Inferial Отправлено: 18 Октября, 2015 - 18:19:05 • Тема: Иероглифы в БД • Форум: Вопросы новичков

Ответов: 9
Просмотров: 387
Мелкий пишет:
Потому вопрос: как вы проверяете, что было записано? Может, кодировка неверно указана при попытке прочитать из базы.


Вижу что запись сохраняется в БД, именно там она сохраняется в иероглифах.
Но при этом выводится из базы как должно быть! (на русском)
Inferial Отправлено: 18 Октября, 2015 - 18:08:17 • Тема: Иероглифы в БД • Форум: Вопросы новичков

Ответов: 9
Просмотров: 387
Мелкий пишет:
Inferial пишет:
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8");

Идея хоть и не самая правильная, но нужная. Вопрос - почему висит тупо в воздухе? В таком виде настройка ни на что не повлияет.
В DSN указывается charset. У вас указан?

Вопрос в целом - с какого перепуга у вас явно модель сама напрямую открывает и закрывает соединение на отдельно-взятую операцию?


Не совсем понял Ваш вопрос, но по поводу DSN:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.         ini_set( "display_errors", true );
  3.         date_default_timezone_set( "Europe/Moscow" );
  4.         define( "DB_DSN", "mysql:host=localhost;dbname=name;charset=utf8" );
  5.         define( "DB_USERNAME", "name" );
  6.         define( "DB_PASSWORD", "pass" );
  7.         define( "CLASS_PATH", "classes" );
  8.         define( "TEMPLATE_PATH", "templates" );
  9.         define( "HOMEPAGE_NUM_ARTICLES", 5 );
  10.         define( "ADMIN_USERNAME", "login" );
  11.         define( "ADMIN_PASSWORD", "pass" );
  12.         require( CLASS_PATH . "/Article.php" );
  13.         require( CLASS_PATH . "/Category.php" );
  14.         function handleException( $exception )
  15.                 {
  16.                 echo "Sorry, a problem occurred. Please try later.";
  17.                 error_log( $exception->getMessage() );
  18.                 }
  19.         set_exception_handler( 'handleException' );
  20. ?>
Inferial Отправлено: 18 Октября, 2015 - 17:55:51 • Тема: Иероглифы в БД • Форум: Вопросы новичков

Ответов: 9
Просмотров: 387
andrewkard пишет:
Inferial
Проверьте кодировку БД, таблицы и полей.


Везде utf8_general_ci стоит, это не первая таблица в БД, у меня все в UTF-8.
А запись именно в эту иероглифами идёт. (Новая Тема)
Inferial Отправлено: 18 Октября, 2015 - 17:48:23 • Тема: Иероглифы в БД • Форум: Вопросы новичков

Ответов: 9
Просмотров: 387
Добрый день всем.
Наткнулся на проблему, которую не в получается решить.
Есть запрос в БД:
PHP:
скопировать код в буфер обмена
  1.   public function insert() {
  2.  
  3.     if ( !is_null( $this->id ) ) trigger_error ( "Article::insert(): Attempt to insert an Article object that already has its ID property set (to $this->id).", E_USER_ERROR );
  4.  
  5.     $conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
  6.     $sql = "INSERT INTO articles ( publicationDate, categoryId, title, summary, content ) VALUES ( FROM_UNIXTIME(:publicationDate), :categoryId, :title, :summary, :content )";
  7.         array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8");
  8.         $st = $conn->prepare ( $sql );
  9.     $st->bindValue( ":publicationDate", $this->publicationDate, PDO::PARAM_INT );
  10.     $st->bindValue( ":categoryId", $this->categoryId, PDO::PARAM_INT );
  11.     $st->bindValue( ":title", $this->title, PDO::PARAM_STR );
  12.     $st->bindValue( ":summary", $this->summary, PDO::PARAM_STR );
  13.     $st->bindValue( ":content", $this->content, PDO::PARAM_STR );
  14.     $st->execute();
  15.     $this->id = $conn->lastInsertId();
  16.     $conn = null;
  17.   }

Проблема: в БД отображается иероглифами, но выводит как положено.
Прошу помощи знатоков!
SQL:
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE IF NOT EXISTS `articles` (
  2.   `id` smallint(5) UNSIGNED NOT NULL AUTO_INCREMENT,
  3.   `publicationDate` date NOT NULL,
  4.   `categoryId` smallint(5) UNSIGNED NOT NULL,
  5.   `title` varchar(255) NOT NULL,
  6.   `summary` text NOT NULL,
  7.   `content` mediumtext NOT NULL,
  8.   PRIMARY KEY (`id`)
  9. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=15


Все файлы в кодировке UTF-8.
Inferial Отправлено: 12 Октября, 2015 - 21:15:44 • Тема: Как удалить пробел в ссыслке, которая отправляется на email? • Форум: Вопросы новичков

Ответов: 6
Просмотров: 304
Строитель

Все ясно) Работает!
К сожалению пока не могу "Спасибо" нажимать!
Inferial Отправлено: 12 Октября, 2015 - 20:51:30 • Тема: Как удалить пробел в ссыслке, которая отправляется на email? • Форум: Вопросы новичков

Ответов: 6
Просмотров: 304
Строитель, благодарю за помощь, помогло. Причем пробовал данный вариант, только по другом. Еще раз спасибо!
(Добавление)
Строитель пишет:
Inferial как вариант - обработать переменную
$name перед ссылкой


Только теперь возникла другая проблема:
Данная ссылка на активацию теперь не действует, так как в ФИО по факту должны быть пробелы.
Возникаю другой вопрос, как сделать, чтобы пробел не прерывал ссылку?
Inferial Отправлено: 12 Октября, 2015 - 20:44:51 • Тема: Как удалить пробел в ссыслке, которая отправляется на email? • Форум: Вопросы новичков

Ответов: 6
Просмотров: 304
IllusionMH пишет:
Inferial, так может urlencode прежде чем конкатенировать имя в строку?


А причем тут конкатенация? я concat не применял.
И как urlencode() можно применить в моём случае?
Inferial Отправлено: 12 Октября, 2015 - 20:25:22 • Тема: Как удалить пробел в ссыслке, которая отправляется на email? • Форум: Вопросы новичков

Ответов: 6
Просмотров: 304
Всем доброго времени суток!

Возник вопрос. Как удалить пробел в ссыслке, которая отправляется на email?
Сам код:
PHP:
скопировать код в буфер обмена
  1. $result3 = mysql_query ("SELECT id FROM users WHERE name='$name'",$db);
  2.         $myrow3 = mysql_fetch_array($result3);
  3.         $activation = md5($myrow3['id']).md5($name);
  4.         $subject = "Подтверждение регистрации";
  5.         $message = "Здравствуйте! Спасибо за регистрацию на blabla.ru\nВаше ФИО: ".$name."\n
  6.         Перейдите по ссылке, чтобы активировать ваш аккаунт:\nhttp://blabla.ru/activation.php?name=".$name."&code=".$activation."\nС уважением,\n Администрация blabla.ru";
  7.         $from = "blabla@mail.ru";
  8.         $headers = "From: $from\r\nReply-to:$from\r\nContent-type:text/plane;charset=utf-8\r\n";
  9.         mail($email, $subject, $message, $headers, "Content-type:text/plane; Charset=utf8\r\n");
  10.         echo "Вам на E-mail выслано письмо с cсылкой, для подтверждения регистрации. Внимание! Ссылка действительна 1 час.<a href='index.php'>Главная страница</a>";


Сам $name, это соответственно ФИО которая в базе хранится с пробелами, а когда отправляется письмо(ссылка) пользователю с этим $name, то возникают пробелы в ссылке, что является неудобством.
Прошу помочь решить проблему.
Inferial Отправлено: 05 Октября, 2015 - 19:25:32 • Тема: Требуется помощь по БД • Форум: Работа с СУБД

Ответов: 7
Просмотров: 1207
fanatic пишет:
Цитата:
а мне нужно что бы отображалось и "name" (имя) и "surname

ну так доставайте из базы name и surname и выводите. в чем проблема?


Не получается.. подскажите хотя бы, через concan это делать?
Inferial Отправлено: 05 Октября, 2015 - 13:56:39 • Тема: Требуется помощь по БД • Форум: Работа с СУБД

Ответов: 7
Просмотров: 1207
Tyoma5891 пишет:
Inferial пишет:
преровнять к name+surname?

тут можно поподробнее, что это значит?


Суть такая:
Пользователи обмениваются сообщениями, на данный момент под получателем и автором у меня идет только значение "name" (имя), а мне нужно что бы отображалось и "name" (имя) и "surname" (фамилия).. таблица в базе есть.
Inferial Отправлено: 05 Октября, 2015 - 12:54:12 • Тема: Требуется помощь по БД • Форум: Работа с СУБД

Ответов: 7
Просмотров: 1207
broshurkaplus пишет:
гуглим 'конкатенация строк в mysql'


Почитал, попробовал.
Остановился на данном запросе:
PHP:
скопировать код в буфер обмена
  1.  
  2. $result = mysql_query("SELECT (CONCAT ('name', 'surname', 'id')) FROM users ORDER BY name",$db);
  3.  

Но в итоге вообще ни чего не выводится.

Прошу помощи специалистов!
Inferial Отправлено: 17 Сентября, 2015 - 21:51:43 • Тема: Требуется помощь по БД • Форум: Работа с СУБД

Ответов: 7
Просмотров: 1207
Доброго времени суток.
Морочит меня задачка:

Имеем две таблицы:
1. Users:
id, name, surname
2. messages
id, author; poluchatel.

Вопрос: как значение poluchatel преровнять к name+surname?
Inferial Отправлено: 17 Сентября, 2015 - 13:25:02 • Тема: Данные не отправляются в БД • Форум: Работа с СУБД

Ответов: 6
Просмотров: 1035
andrewkard пишет:
Inferial
Нашли?
Inferial пишет:
`autor` varchar(15) NOT NULL DEFAULT '',

Inferial пишет:
INSERT INTO messages (author


Не понял Все ходы записаны
Невнимательности ...
Я примного благодарен !!
Inferial Отправлено: 17 Сентября, 2015 - 12:48:54 • Тема: Данные не отправляются в БД • Форум: Работа с СУБД

Ответов: 6
Просмотров: 1035
Sail

Вариант для решения проблемы не плохой, теперь я вижу ошибку "INSERT INTO messages (author, poluchatel, date, text) VALUES ('Дмитрий','Ольга','2015-09-17','уфвфцвфцу')(1054)Unknown column 'author' in 'field list'".. и в БД так же не проходит.

Страниц (2): [1] 2 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB