【问题标题】:How to unset BLOB with php/mysql?如何使用 php/mysql 取消设置 BLOB?
【发布时间】:2011-04-03 22:03:45
【问题描述】:

因为,我无意中做到了。阅读维基百科后,我了解“二进制大对象”适用于大型媒体文件,我没有保存媒体文件。

那么数据是如何以这种方式存储的呢?在 phpmyadmin 中将文本显示为 BLOB 的设置有什么问题?

来自 phpmyadmin 的 MySql 字段,
字段 = 'first_name'
类型 = 文本
排序规则 = latin1_bin
空 = 否
默认 = 无

php 代码, $insertName = "INSERT INTO name(first_name,last_name)VALUES('$firstName','$lastName')";
$dbSuccess_1 = mysql_query($insertName,$connectID) or die ("ERROR_1 - 无法保存 到 MySQL".error_get_last().mysql_error($connectID));

【问题讨论】:

  • 您的问题是什么?我不明白。
  • 如果您说要在数据库中存储二进制文件,那是错误的。您应该将这些存储在您的文件系统中,并在您的数据库中存储对系统上文件的引用。
  • 我把 q 改写得更清楚了...

标签: php mysql blob


【解决方案1】:

如果您要询问如何将 BLOB 列更改为 TEXT,您可以使用类似于以下的查询:

ALTER TABLE `name`  
    CHANGE COLUMN `first_name` `first_name` TEXT NULL FIRST
    ,CHANGE COLUMN `last_name` `last_name` TEXT NULL AFTER `first_name`;

您可以使用 PHPMyAdmin 使更改更加容易。

【讨论】:

  • IIRC phpMyAdmin(至少是旧版本)将 TEXT 和 BLOB 字段都显示为“BLOB”。如果您将它们创建为文本,则可能没有任何问题。
  • [我删除了我之前对这篇文章的评论,因为当我重新阅读我的问题时,我意识到这个答案是完全正确的。] 虽然 phpMyAdmin 仍然将这些原始表格显示为文本,但当我上传到不同的服务器,并以相同的方式创建表,文本在不同的服务器上正确显示。我只能得出结论,要么是其他一些参数将 TEXT 数据更改为 BLOB,要么表以某种方式损坏。
【解决方案2】:

TEXT 和 BLOB 本质上是相同的,除了 TEXT 字段受字符集限制(并且在对字段进行排序/分组时考虑字符集),而 BLOB 被逐字存储为字节序列并且不会被变身了。

相关文档:http://dev.mysql.com/doc/refman/5.0/en/blob.html

【讨论】:

  • 您是说我设置的排序规则会导致设置 BLOB,即使我在创建表时选择了 TEXT?
  • 不,这会破坏 TEXT 字段的用途。可能是 phpmyadmin 将文本视为 blob 以用于显示目的。您可以访问普通的 mysql 控制台吗?如果可以,请进入并尝试执行show create table tablenamedescribe tablename 并查看那里报告的内容。
猜你喜欢
  • 2011-09-13
  • 2014-05-13
  • 2016-06-05
  • 1970-01-01
  • 1970-01-01
  • 2012-02-13
  • 2012-06-17
  • 1970-01-01
  • 2012-05-18
相关资源
最近更新 更多