php - 从 MySQL 中的 BINARY 列检索数据并将其转换为 PHP 中的 Base64

标签 php mysql binary base64

所以我在 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/

相关文章:

php - mysql从两个表中查询两行

php - 从 PHP 变量中过滤特定标签内容?

php - MySQL查询结果按查询顺序

c - C语言中二进制数加一?

c - 二进制文件错误

php - 如何在 propel 中创建一个新的事务范围

php - laravel 只接受字符串中的第一个字符

mysql - CakePHP 模型问题,如何为民意调查和测验建立表关系?

mysql - MySQL 中外连接逻辑表错误的 key 文件不正确

对我的 C 编程书中的示例代码感到困惑