在mysql中从二进制列检索数据并在php中将其转换为base64

hujrc8aj  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(442)

所以我在mysql中有一个二进制(255)字段,我想在其中存储一个base64字符串,并根据需要使用php检索它。
我使用“update table set bindata=0x”存储数据。bin2hex(base64_decode($b64));
它看起来运行良好,无论如何,数据库中有一个值。但我想不出如何找回我原来的base64字符串。我试过在select结果上使用base64_encode,使用hex(bindata),然后运行hex2bin和base64_encode。两者似乎都不起作用。
如果base64字符串转换成二进制后,在末尾有一堆零,那就好了。

42fyovps

42fyovps1#

我会这样存储值:

$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']);
}

相关问题