Вы можете использовать base64_encode()
вместо addslashes()
, что предотвращает проблемы с двоичными данными из-за преобразования. Вам нужно изменить это, используя base64_decode()
при чтении из БД.
Лучшим вариантом будет использование столбца BLOB в вашей БД и функции LOB драйвера PHP DB. Для PDO это будет примерно так:
$pdo = new \PDO(...);
$fp = fopen('data://' . $content, 'rb');
$stmt = $pdo->prepare("insert into data (name) values (?)");
$stmt->bindParam(1, $fp, PDO::PARAM_LOB);
$stmt->execute();
Это решение хранит двоичные данные без изменений в БД.