所以我在 MySQL 中有一个 BINARY(255) 字段,我想在其中存储一个 Base64 字符串并根据需要使用 PHP 检索它。
我使用存储数据 '更新表 SET bindata=0x'.bin2hex(base64_decode($b64));
这似乎工作正常,无论如何,数据库中有一个值。但我不知道如何取回原来的 Base64 字符串。我尝试在 SELECT 结果上使用 base64_encode,使用 HEX(bindata),然后运行 hex2bin 和 base64_encode。似乎都不起作用。
如果 Base64 字符串在转换为二进制后,末尾有一堆零,那就没问题。
最佳答案
我会这样存储值:
$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']);
}
关于php - 从 MySQL 中的 BINARY 列检索数据并将其转换为 PHP 中的 Base64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48253698/