将Umlaut用德语保存到数据库

时间:2016-03-26 23:52:29

标签: php laravel

我拼命尝试将通过POST请求发送的用户输入保存到我的数据库,但是“Umlaute”如“ä,ü...”无法识别。我怎样才能解决这个问题?我已经使用UTF-8了。

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();
        });
    }

但“Möller”数据库中的输出是:M& uuml;米勒“

1 个答案:

答案 0 :(得分:0)

e()函数只是htmlentities()的Laravel辅助函数。但是,不应使用htmlentites()来尝试阻止SQL注入。它并没有逃脱它所需要的一切,这不是它的目的;它在输出HTML时用于防范XSS攻击。在将数据放入数据库之前,您不希望在数据上运行htmlentites(),您希望在将数据拉出并即将显示之后运行数据(这是什么刀片双胡子({{ }})已经做了。

Laravel的Eloquent使用PDO和参数化查询来防止SQL注入。这已经为您完成了,所以除非您将raw函数用于任何事情,否则您无需担心任何事情。

取消对e()的电话,你应该好好去。