调用Create后为何获取不到返回的结果
发布于:2022-01-17 09:50:54
#1 lrsct
根据帮助文档说明,在数据$db->create($newrow);后可以获取自增长字段的值,为何我获取不到,请各位帮忙,以下是代码:
//写入主表
$jobmainObj = spClass("lib_job_main");
$newrow=array(
'job_name'=>$job_name,
'job_type_name'=>$job_type_name,
'expect_time'=>$expect_time,
'important_level'=>$important_level,
'charge_person_name'=>$charge_person_name
);
$id=$jobmainObj->create($newrow);
//写入子表
if (false!=$id){
$jobsubObj = spClass("lib_job_sub");
$jobsubObj->runSql("insert into wj_job_sub (job_id,sub_job_name,item_id,order_id,limted_item_id) select ".$id.",item_name,item_id,order_id,limted_item_id from wj_sub_job_list where type_id=7");
}
2012-05-03 10:18:58
#2 jake
看不出来,可能你的主键不是自增量吧。
建议是从我们入门教程的例子开始,试试看行不行
http://www.speedphp.com/easy-database-crud.html
2012-05-03 12:36:34
#3 lrsct
表有设置主键,我跟例程对比了一下,代码编写也一样,没有差别,但就是出不来。
2012-05-04 12:51:24
#4 lrsct
例程在我本机运行可以获取得到,但我写的就是获取不了。
2012-05-04 12:54:50
#5 lrsct
两个类的信息分别如下:
guestbook Object
(
[pk] => job_id
[table] => guestbook
[verifier] =>
[addrules] => Array
(
)
[linker] =>
[tbl_name] => guestbook
[_db] => db_mysql Object
(
[conn] => Resource id 13
[arrSql] => Array
(
[0] => SET NAMES UTF8
[1] => DESCRIBE guestbook
[2] => INSERT INTO guestbook (name,title,contents) VALUES ('fgjghj','jkhjkghjk','ghjkghj')
)
)
)
lib_job_main Object
(
[pk] => job_id
[table] => job_main
[verifier] =>
[addrules] => Array
(
)
[linker] =>
[tbl_name] => wj_job_main
[_db] => db_mysql Object
(
[conn] => Resource id 10
[arrSql] => Array
(
[0] => SET NAMES UTF8
[1] => SELECT * FROM wj_acl WHERE controller = 'main' AND action = 'xqkd_newjob_action' ORDER BY aclid
[2] => DESCRIBE wj_job_main
[3] => INSERT INTO wj_job_main (job_name,job_type_name,expect_time,important_level,charge_person_name,item_attribute,job_construction,cons_person,cons_team_person,cons_team_tel,job_sm,job_create_time,job_creater) VALUES ('FTTH工程','工程','2012-6-15','非常重要','admin','2011二期','','','','','','2012-05-03 12:56:31','admin')
)
)
)
2012-05-04 12:57:25
#6 lrsct
我原因找到了,具体是:
如果在表的MODEL里面加上这个过程就不会返回值,去掉后则可以。
public function create($newrow){
// 使用array_merge构造新的$row
$newrow = array_merge($newrow, array(
'job_create_time' => date('Y-m-d H:i:s'),
'job_creater' => $_SESSION["userinfo"]["uname"]
));
// 调用父类(spModel)的create方法
parent::create($newrow);
}
2012-05-04 13:33:44
#7 jake
lrsct 发表于 2012-5-4 13:33
我原因找到了,具体是:
如果在表的MODEL里面加上这个过程就不会返回值,去掉后则可以。
public function ...
public function create($newrow){
// 使用array_merge构造新的$row
$newrow = array_merge($newrow, array(
'job_create_time' => date('Y-m-d H:i:s'),
'job_creater' => $_SESSION["userinfo"]["uname"]
));
// 调用父类(spModel)的create方法
parent::create($newrow);
}
没有返回值,那当然没有了。(就不太懂为什么说和例子代码一样,例子代码有重写create吗?)
解决方法: return parent::create($newrow);
2012-05-04 13:46:45