Mysqli_fetch_assoc заменяет символы новой строкиPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Mysqli_fetch_assoc заменяет символы новой строки

Сообщение Anonymous »

У меня странная проблема с mysqli_fetch_assoc().
На сервере разработки все работает правильно.

В моей локальной среде mysqli_fetch_assoc() заменяет \n на \r\n в текстовых полях, возвращаемых из базы данных.
Из-за этого, unserialize() прерывается:

Код: Выделить всё

unserialize(): Error at offset X of Y bytes
Сериализованная строка хранится в базе данных, а дополнительные символы \r изменяют длину строки, поэтому десериализация завершается неудачно.
Важные детали:
  • И в среде разработки, и в локальной среде используются:

    PHP 8.2.26
  • MariaDB 11.2
[*]Локально я использую Ubuntu 22.04 и Docker.

[*]Структура базы данных идентична (

Код: Выделить всё

SHOW CREATE TABLE
совпадает)

[*]Кодировка – utf8mb3 на обоих серверах

[*]Версии PHP идентичны

[*]Вывод phpinfo кажется одинаковым (по крайней мере, все, что связано с mysql, сортировкой и кодировкой)

[*]Настройки подключения одинаковы идентично

[*]mysqlnd используется в обеих средах, и версия одинакова.


Что я уже пробовал:
  • Проверенная версия PHP точно соответствует
  • Проверенная версия MariaDB точно соответствует
  • Проверенная структура таблицы и кодировка
  • Проверено sql_mode
  • Проверено:

    Код: Выделить всё

    SET sql_mode='NO_BACKSLASH_ESCAPES';
    SET character_set_results=binary;
    
    
  • Сравнение результатов phpinfo()
  • Проверенные переменные кодировки клиента/сервера
  • Подтверждено, что необработанное значение в БД содержит только \n, а не \r\n
Я хочу решить эту проблему на низком уровне (уровень драйвера MySQL / mysqli / PHP).

Замена символов в PHP является не приемлемым решением.
Вопрос:
Что может привести к тому, что mysqli_fetch_assoc преобразует \n в \r\n в одной среде, но не в другой, если версии PHP и MariaDB идентично?
Я уже искал в Google и спрашивал у ИИ возможные причины, но не нашел решения.
Есть идеи, что еще может вызвать такое поведение?

Подробнее здесь: https://stackoverflow.com/questions/798 ... characters
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»