Извлечение данных из столбца BINARY в MySQL и преобразование их в Base64 в PHP

0

Поэтому у меня есть поле BINARY (255) в MySQL, и я хочу сохранить в нем строку Base64 и получить его по мере необходимости с помощью PHP.

Я храню данные, используя "UPDATE table SET bindata = 0x'.bin2hex (base64_decode ($ b64));

Кажется, что он работает нормально, во всяком случае, в базу данных есть значение. Но я не могу понять, как вернуть исходную строку base64. Я попытался использовать base64_encode в результатах SELECT, используя HEX (bindata), а затем запустив hex2bin и base64_encode. Кажется, что не работает.

Если строка base64, однажды преобразованная в двоичную, имеет кучу нулей в конце, это прекрасно.

  • 0
    Вы пытались использовать MySQLs FROM_BASE64 () и TO_BASE64 () ?
  • 0
    @PaulSpiegel Они не работают в моей версии MySQL.
Теги:
base64
binary

1 ответ

0

Я бы сохранил ценность таким образом:

$sql = "UPDATE table SET bindata=?";
$stmt = $pdo->prepare($sql);

Передайте в качестве параметра запроса результат base64_decode($b64). Это нормально, чтобы передать двоичную строку таким образом.

$stmt->execute([base64_decode($b64)]);

Когда вы извлекаете двоичную строку из базы данных, запросите ее так:

$sql = "SELECT bindata FROM table ...";
$stmt = $pdo->prepare($sql);
$stmt->execute();

Хорошо получить двоичную строку. После того, как вы получите это в строке результатов, вы можете повторно закодировать его.

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo base64_encode($row['bindata']);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню