php非法使用对象,ThinkPhp非法数据对象

博客内容涉及ThinkPHP框架中进行数据插入时遇到的问题。开发者在尝试添加数据时遇到了非法数据对象错误,问题出在`position`字段。通过var_dump输出数据并检查数据库字段,发现之前存在的`pre_position`和`next_position`列已被删除,但数据缓存中仍保留这些字段,导致错误。清理Runtime/Data/_fields文件后,问题得到解决。
摘要由CSDN通过智能技术生成

$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里,删了就好了。

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值