ThinkPhp非法数据对象

翟码农 2015-04-05 04:00:05
$data = $_POST;
$data['user_id'] = 1;
$data['create_at'] = date("Y-m-d H:i:s");
$data['update_at'] = date("Y-m-d H:i:s");
$data['is_enable'] = 1;
$data['is_visible'] = 1;
$categoryModel = new \Admin\Model\CategoryModel();
$footPosition = $categoryModel->getFootPosition();
$data['position'] = intval($footPosition) + 1;


// var_dump($data);
$categoryModel->add($data);
我开始以为是position类型不对,可是不论转为string还是int,还是一样报非法数据对象错误。$data['position'] = intval($footPosition) + 1;这个注释掉插入数据就没问题了。求助啊.

var_dump后的结果如下,看不出什么问题啊。
array(7) { ["category_name"]=> string(12) "风言风语" ["user_id"]=> int(1) ["create_at"]=> string(19) "2015-04-05 15:39:41" ["update_at"]=> string(19) "2015-04-05 15:39:41" ["is_enable"]=> int(1) ["is_visible"]=> int(1) ["position"]=> int(2) }

数据库栏位position,已确定不包含空格,及栏位名称是一致的。
...全文
313 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
翟码农 2015-04-05
  • 打赏
  • 举报
回复
问题已解决。进了ThinkPhp\Model,_facade函数, foreach ($data as $key=>$val){ file_put_contents("xiaobin.txt", $key."\n", FILE_APPEND) ; file_put_contents("xiaobin.txt", $fields, FILE_APPEND); if(!in_array($key,$fields,true)){ if(APP_DEBUG){ E(L('_DATA_TYPE_INVALID_').':['.$key.'=>'.$val.']'); } unset($data[$key]); }elseif(is_scalar($val)) { // 字段类型检查 和 强制转换 $this->_parseType($data,$key); } } 发现field数组结果如下:category_iduser_idcategory_nameblog_numcreate_atupdate_atis_enableis_visiblepre_positionnext_positioncategory_idArray,这些都是数据库列名,其中pre_position,next_position是开始建表时的栏位,后来我删了这两列,添了position这一列。缓存已禁用,所以清除缓存也没用。 最后发现这数据保存在Runtime/Data/_fields里,删了就好了。
xuzuning 2015-04-05
  • 打赏
  • 举报
回复
$footPosition = $categoryModel->getFootPosition(); 后,打印出 $footPosition 看看是些什么 另外,出错时应给出原始的错误信息

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧