Zend框架 - 不在数据库中输入值 - 垃圾进入

时间:2010-02-20 11:38:21

标签: php sql zend-framework base64

大家好我在这里遇到紧急情况。我的代码工作了一段时间,突然间出现了一些错误,我不知道是什么!我通过序列化它然后在其上运行base64_encode将对象存储在我的数据库中。结果是一个编码的序列化字符串,当我想要检索时,我只是解码并取消序列化。

它一直工作正常,但突然间我不知道为什么 - 每当我尝试运行插入的部分时 - 它正确地编码对象但是在运行sql查询之后 - 最终在数据库中的值是一个截断的混乱!!!!

如果我手动复制将编码字符串粘贴到它复制的字段并插入正常,则不是数据库问题。

我不知道最新情况 - 下面的代码是我如何进行更新:

$personsTable = new ZFltData_Db_Table(array('name'=>'people'));
$where = $personsTable->getAdapter()->quoteInto('id = ?', $id);
$data['object'] = base64_encode(serialize($obj));
$personsTable->update($data, $where);

数据库字段实际上是一个longText。

编辑==== 抱歉,那个。加密的字符串看起来像这样:

YToyOntpOjA7YTozOntzOjg6ImNhdGVnb3J5IjtzOjU6InBob25lIjtzOjQ6InR5cGUiO3M6NDoiV29yayI7czo3OiJkZXRhaWxzIjtzOjEzOiIxMjMzIDQzNTQzNTQ1Ijt9aToxO2E6Mzp7czo4OiJjYXRlZ29yeSI7czo1OiJwaG9uZSI7czo0OiJ0eXBlIjtzOjQ6IkhvbWUiO3M6NzoiZGV0YWlscyI7czoxNzoiMTAwOTEyIDgwOTgxMjkwMTIiO319

如果我使用Navicat explorer手动将其粘贴到数据库中,就会这样。

然而,执行时的代码最终只会在数据库中放入以下内容:

Tjs=

奇怪的是,无论编码对象的内容是什么,这都是输入的...对象实际上是一个关联数组...这里有什么不对吗?它工作正常,直到......今天......

1 个答案:

答案 0 :(得分:3)

Tjs= base64_decodes to N;,这是null的序列化表示。

因此,$obj在您序列化它的脚本中是null,而不是关联数组。

这是不可能的,因为我们不知道$ obj来自哪里。如果您正在使用脚本进行更深入的操作,请进行print_r()测试以查看它是否在某处被覆盖。