2016-03-26 3 views
0

Я отчаянно пытаюсь сохранить вход пользователя, отправленный через запрос POST в мою базу данных, но «Umlaute», например «ä, ü ...», не распознается. Как я могу это исправить? Я использую UTF-8 уже.Сохранение Umlaut на немецком языке в базе данных

database.php

'mysql' => [ 
    'driver' => 'mysql', 
    'host'  => env('DB_HOST', 'localhost'), 
    'database' => env('DB_DATABASE', 'forge'), 
    'username' => env('DB_USERNAME', 'forge'), 
    'password' => env('DB_PASSWORD', ''), 
    'charset' => 'utf8', 
    'collation' => 'utf8_unicode_ci', 
    'prefix' => '', 
    'strict' => false, 
], 

Обработка информации о пользователе

$userData["firstName"] = e($bodyContent["firstName"]); 
$userData["lastName"] = e($bodyContent["lastName"]); 



MFUser::create(array(
     'first_name' => $userData["firstName"], 
     'last_name' => $userData["lastName"] 
    )); 

миграции

public function up() 
    { 
     Schema::create('mfusers', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->string('user_reference')->unique(); 
      $table->string('first_name'); 
      $table->string('last_name'); 
      $table->integer('user_type_id')->unsigned(); 
      $table->foreign('user_type_id')->references('id')->on('user_types'); 
      $table->binary('salt', 16); 
      $table->string('email')->unique(); 
      $table->string('password', 60); 

      $table->timestamps(); 
     }); 
    } 

Bu т выход в базе данных для «Меллер» является: M & uuml; Меллера»

+0

Вам нужно убедиться, что столбец и база данных UTF8. Также убедитесь, что скрипт UTF8. –

+0

как это сделать? – sesc360

+0

Возможно, вы могли бы также var_dump $ bodyContent ["firstName"] и $ userData ["firstName"], чтобы проверить, были ли значения в порядке до вставки. Может быть, проблема не в базе данных –

ответ

0

e() функция просто вспомогательная функция Laravel для htmlentities(). Тем не менее, htmlentites() не следует использовать для предотвращения внедрения SQL. Он не избегает всего, что ему нужно, и это не его цель; он используется при выводе HTML для защиты от атак XSS. Вы не хотите запускать htmlentites() на свои данные перед тем, как поместить его в свою базу данных, вы хотите запустить его на своих данных после того, как вы вытащили его и собираетесь его показать (это то, что уже удваивает усы ({{ }}) делает).

Laravel's Eloquent использует PDO и параметризованные запросы для предотвращения SQL-инъекции. Это уже испечено для вас, поэтому вам не о чем беспокоиться, если вы не используете функции raw для чего-либо.

Удалите звонок по телефону e(), и вам должно быть хорошо.

Смежные вопросы