PHP: Как сохранить двоичную строку в MySQL 5.7 - PullRequest
0 голосов
/ 02 марта 2020

Как я могу преобразовать эту двоичную строку:

b"iphonée@3,;= ÑÑñe x"

В обычную строку?

Мне действительно нужно иметь эту строку как обычную строку, а не как двоичную строку.

У меня проблемы с сохранением в MySQL этой двоичной строки. Если CSV, который я декодирую, не имеет символов ñ, é или каких-либо из этих необычных символов, у меня нет проблем с сохранением. Но когда один из этих символов установлен в ячейке, строка выглядит как двоичная строка, и я получаю сообщение об ошибке при сохранении MySQL этой двоичной строки.

Я получаю эту ошибку:

QueryException {#1780
  #sql: "insert into `seller_product_languages` (`seller_product_id`, `lang`, `name`, `description`, `description_html`, `bullet_html`, `bullet`, `meta_keywords`, `default`, `updated_at`, `created_at`) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
  #bindings: array:11 [
    0 => 117
    1 => "es"
    2 => b"iphonée@3,;= ÑÑñe x"
    3 => "negro"
    4 => "negro"
    5 => null
    6 => ""
    7 => null
    8 => 1
    9 => "2020-03-02 18:40:56"
    10 => "2020-03-02 18:40:56"
  ]
  #message: b"SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xE9e@3,;...' for column 'name' at row 1 (SQL: insert into `seller_product_languages` (`seller_product_id`, `lang`, `name`, `description`, `description_html`, `bullet_html`, `bullet`, `meta_keywords`, `default`, `updated_at`, `created_at`) values (117, es, iphonée@3,;= ÑÑñe x, negro, negro, , , , 1, 2020-03-02 18:40:56, 2020-03-02 18:40:56))"
  #code: "HY000"
  #file: "/home/vagrant/Code/PROJECT/vendor/laravel/framework/src/Illuminate/Database/Connection.php"
  #line: 664
  -previous: PDOException {#1779
    #message: "SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xE9e@3,;...' for column 'name' at row 1"
    #code: "HY000"
    #file: "/home/vagrant/Code/PROJECT/vendor/laravel/framework/src/Illuminate/Database/Connection.php"
    #line: 458
    +errorInfo: array:3 [
      0 => "HY000"
      1 => 1366
      2 => "Incorrect string value: '\xE9e@3,;...' for column 'name' at row 1"
    ]

Все таблицы и столбцы 'utf8mb4' и параметры сортировки 'utf8mb4_unicode_ci'

Среда: - PHP 7.2 - Laravel 5.5 - Ubuntu 18.04 - MySQL 5.7

1 Ответ

0 голосов
/ 03 марта 2020

Я решил изменить все таблицы с utf8 на utf8mb4. И делать utf8_encode (..) для строки

Спасибо всем

...