您好,欢迎访问一九零五行业门户网

ThinkPhp非法数据对象

$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,已确定不包含空格,及栏位名称是一致的。
回复讨论(解决方案)$footposition = $categorymodel->getfootposition();
后,打印出 $footposition 看看是些什么
另外,出错时应给出原始的错误信息
问题已解决。进了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里,删了就好了。
其它类似信息

推荐信息