不知道在V2EX问这种事情会不会太low了 
是这样的,朕最近为了给自己的ThinkSNS小站写一个桌面客户端。是用ThinkPHP(妈呀不行气质更low了!QAQ)框架弄的,登录验证、获取微博信息这些都实现了,正在朕心中翻涌起滚滚巨浪心想着能一统江山的时候,出现了谜之难题。
朕的发布文字微博的函数是这样写的
function textTweet($uid, $content){
        $Feed = M('feed');
            $Feed->uid = $uid;
            $Feed->publish_time = time();
            $Feed->type = 'post';
            $feed_id = $Feed->add();
        $FeedData = M('feed_data');
            $FeedData->feed_id = $feed_id;
            $FeedData->feed_data = "a:16:{s:7:\"content\";s:24:\"".$content."\";s:4:\"body\";s:24:\"".$content."\";s:10:\"source_url\";s:0:\"\";s:9:\"attach_id\";s:0:\"\";s:3:\"uid\";i:283;s:3:\"app\";s:6:\"public\";s:4:\"type\";s:4:\"post\";s:10:\"app_row_id\";i:0;s:13:\"app_row_table\";s:4:\"feed\";s:12:\"publish_time\";i:".time().";s:4:\"from\";s:1:\"0\";s:12:\"repost_count\";i:0;s:13:\"comment_count\";i:0;s:6:\"is_del\";i:0;s:9:\"is_repost\";i:0;s:8:\"is_audit\";i:1;}";
            $FeedData->client_ip = get_client_ip();
            $FeedData->feed_content = $content;
            $FeedData->add();
            return $feed_id;
    }
求别吐槽文风…然后那个谜一样的feed_data大概就是万恶之源
POST以后确确实实输出了Feed_id(是的你没看错那个key就是密钥)

然而在Timeline里面显示出来是空空的

数据库里面的feeddata明明活蹦乱跳的啊!QAQ

嗯,问了一只触触,他说TS是读缓存的,然而朕清了服务器缓存后还是一片空白。所以朕就找到大家了…希望大家不要嫌弃朕……
|      1giuem      2015-06-18 18:32:23 +08:00 via Android 自称 朕,真是恶心 | 
|  |      2blacktulip      2015-06-18 18:33:17 +08:00  9 皇上自行圣裁即可,草民不敢乱言。 | 
|  |      3laoertongzhi      2015-06-18 18:36:59 +08:00 皇上自行圣裁即可,草民不敢乱言。 | 
|  |      4laoertongzhi      2015-06-18 18:37:09 +08:00 皇上自行圣裁即可,草民不敢乱言。+1 | 
|  |      5incrediblink OP | 
|  |      6Septembers      2015-06-18 18:49:47 +08:00 via Android  1 $FeedData->feed_data的字符串可以反序列化后用var_dump打印出来改成array再序列化 看起来会稍微好点 | 
|      7543400      2015-06-18 19:13:14 +08:00 via Android (≧▽≦) 楼主萌萌哒 | 
|  |      8itfanr      2015-06-18 19:15:08 +08:00  1 @incrediblink  以后乖乖的吧 | 
|  |      949      2015-06-18 19:37:15 +08:00 via Android | 
|  |      11oott123      2015-06-18 19:54:39 +08:00 你知道 phpserialize 这个函数么…… | 
|  |      12thinkif      2015-06-18 19:54:48 +08:00 大胆,在朕面前敢自称朕,你让其他的朕们怎么看。。。 | 
|  |      13oott123      2015-06-18 19:55:56 +08:00 记忆偏差了,抱歉,这函数就叫 serialize http://php.net/manual/zh/function.serialize.php | 
|  |      14oott123      2015-06-18 19:58:47 +08:00  2 刚刚忘了说你的问题在哪了。 s:24 这个地方,24是代表字符串长度;然而你的 $content 的长度不确定,反序列化的时候就挂了…… | 
|  |      15incrediblink OP @oott123 (❁´▽`❁)谢谢小天使! | 
|  |      16tSQghkfhTtQt9mtd      2015-06-18 21:33:42 +08:00 我想知道你的POST测试工具是什么 | 
|  |      17oott123      2015-06-18 21:41:46 +08:00 @liwanglin12 目测 postman ,chrome app | 
|  |      18tSQghkfhTtQt9mtd      2015-06-18 21:54:42 +08:00 @oott123 哦。。的确是,旧版的不长这样,没认出来。。 | 
|  |      19incrediblink OP @oott123 其实昨天晚上看到你说的还是云里雾里,但是睡觉翻来覆去的时候突然想通,今天立马(写了一段很丑的代码)就实现了!小天使万岁!( ´∀`) | 
|  |      20oott123      2015-06-19 08:53:35 +08:00 via Android @incrediblink 你该不会吧 24 换成了 strlen 吧… | 
|  |      21incrediblink OP @oott123 (つД`)我在你心中就这么呆吗! 现在我把代码改成这样了w ``` $unserialized_feed_data[content] = $content; $unserialized_feed_data[body] = $content; $unserialized_feed_data[source_url] = ""; $unserialized_feed_data[attach_id] = 0; $unserialized_feed_data[uid] = $uid; $unserialized_feed_data[app] = "public"; $unserialized_feed_data[type] = "post"; $unserialized_feed_data[app_row_id] = 0; $unserialized_feed_data[app_row_table] = "feed"; $unserialized_feed_data[publish_time] = $time; $unserialized_feed_data[from] = 0; $unserialized_feed_data[repost_count] = 0; $unserialized_feed_data[comment_count] = 0; $unserialized_feed_data[is_del] = 0; $unserialized_feed_data[is_repost] = 0; $unserialized_feed_data[is_audit] = 1; $FeedData->feed_data = serialize($unserialized_feed_data); ``` | 
|  |      22oott123      2015-06-19 19:46:08 +08:00  1 @incrediblink 哈哈哈哈哈哈还是好呆…… 首先你这个代码,数组下标里应该用字符串,如 $data["from"] 而不是 $data[from], 不然会报一个 Warning 级别的错误,这属于未定义常量。 其次,你可以写成 $data = array( 'a'=> 'b', 'c'=> 'd' ); 的形式,不用写那么复杂…… 另外我觉得你应该好好系统的学一下 PHP 了…… | 
|  |      23incrediblink OP @oott123 臣妾遵旨(´-ι_-`) |