【问题标题】:Can I insert binary data into MySQL TEXT column?我可以将二进制数据插入 MySQL TEXT 列吗?
【发布时间】:2013-10-15 11:20:37
【问题描述】:

是否可以将二进制数据插入 MySQL TEXT 列?我有一个表,我想用它来存储 UTF-8 文本和二进制数据(非常基本的结构 - id int(11), type char(1), data text),但是当我尝试将一些二进制数据(JPEG 图像)插入到 data 列中时,该列为空。

我在 PHP 中使用 mysql_querymysql_real_escape_string 来执行 INSERT 查询,它们都应该是二进制安全的。示例代码:

mysql_query("INSERT INTO my_table VALUES(" . (int)$id . ", 'b', '" . mysql_real_escape_string($jpegImageData) . "')");

我不想将data 列类型更改为BLOB - 在某些情况下,我需要用于比较/整理此列中的字符串。

【问题讨论】:

  • 这真的是糟糕的数据库设计的尖叫
  • 也许你有一些mysql异常? echo mysql_error($handle);
  • 您是否考虑过二进制数据也可能是无效的 UTF-8 的可能性,当您尝试将编码损坏的字符串作为 UTF 存储在数据库中时会导致问题/错误-8?如果您对这些错误感到好奇,请尝试让我知道结果! =]

标签: php mysql sql binary-data


【解决方案1】:

为什么不呢?只需在 base64 中编码并将其放入该字段即可。

<?php
$str = 'Some UTF-8 string or even a binary array';
echo base64_encode($str);
?>

【讨论】:

  • 我的意思是,我可以在没有base64编码的情况下将二进制数据插入文本列吗?它应该工作还是这列是空的原因?
  • 说实话,从来没有这样做过,但我相信你可以,因为它们的核心区别在于 mysql 如何处理它们,而不是它们的存储方式(这完全取决于存储引擎)。
猜你喜欢
  • 2015-06-09
  • 2012-04-25
  • 1970-01-01
  • 2010-11-27
  • 2019-04-26
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多