SQLSTATE[22007]: недопустимый формат даты и времени: 1366 Неправильное строковое значение, функция html_entity_decode

Я пробовал html_entity_decode, как показано ниже;

      //Foreach ($datas from remote db)
$recorded = User::updateOrCreate([
        "old_id" => $user->Id,
        "username" => $user->UserName,
    ],[
        "old_id" => $user->Id,
        "name" => html_entity_decode($user->FullName),
        "username" => $user->UserName
]

и это дает мне ошибку, как показано ниже,

      SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect string value: '\xE3\xBCseyi...' for
column `database`.`users`.`name` at row 1 (SQL: update `users` set
`name` = hseyin furkan, `users`.`updated_at` = 2021-02-22 18:23:39 where `id` = 2)

Если я не вызываю функцию html_entity_decode , она записывает в столбец типа «hüseyin»

Как я могу это исправить?

Моя таблица:

      Schema::create('users', function (Blueprint $table) {
        $table->id();
        $table->string('name')->nullable();
        $table->string('username')->nullable();

1 ответ

Решение

Возможно, ваши данные представляют собой набор символов ASCII, а ваш столбец ожидает UTF-8. Можете ли вы попробовать этот код;

      mb_convert_encoding(html_entity_decode($user->FullName), "UTF-8")

Если вы используете laravel, вы можете использовать функцию, которая;

      $fullname = Str::ascii(html_entity_decode($user->FullName),'tr');
Другие вопросы по тегам