小编use*_*851的帖子

是否使用MySQL中的当前/默认字符集转换BLOB?

  1. 我有一个带有BLOB字段的表.
  2. 该表的字符集是Latin1.
  3. 我连接到DB和"SET CHARACTER SET utf8".
  4. 然后我将二进制数据保存到字段中.
  5. 然后我检索数据,这不是我保存的(损坏的).

代码:

<?php
$pdo = new \PDO("mysql:host=127.0.0.1;dbname=***", '***', '***');

$pdo->exec('SET CHARACTER SET utf8');

$sql = "INSERT INTO pdo_blob (the_blob) VALUES(:the_blob)";
$insertStm = $pdo->prepare($sql);

$blob = (binary) file_get_contents('/home/***/test.pdf');
$insertStm->bindParam(":the_blob", $blob, \PDO::PARAM_LOB);
$insertStm->execute();

$selectStm = $pdo->prepare("SELECT the_blob FROM pdo_blob ORDER BY id DESC LIMIT 1");
$selectStm->execute();

$savedBlob = null;
$selectStm->bindColumn(1, $savedBlob, \PDO::PARAM_LOB);
$selectStm->fetch();

echo 'equal: ' . ((int) ($blob == $savedBlob));
Run Code Online (Sandbox Code Playgroud)

php mysql perl pdo utf-8

6
推荐指数
2
解决办法
7741
查看次数

标签 统计

mysql ×1

pdo ×1

perl ×1

php ×1

utf-8 ×1