为什么Call to undefined function insert() [ 新手入门 ]
这句话为什么执行不成功:
$a=array("f1"=>"Dog","f2"=>"Cat","Month"=>"f3","f4"=>"Horse");
abc::model().insert($a);
错误提示:
Fatal error: Call to undefined function insert()
模型文件不是应该可以插入的么?abc从CActiveRecord派生出来,而CActiveRecord有insert方法的啊。
共 10 条回复
-
确实是编译通过了,但是真正执行的时候发现抛出了异常:active record 由于不是新的, 无法被新增到数据库.
为什么会这样呢?
既然不是新的,我就new一个吧,于是,改成try { $pic=new abc; $data[f1]=5; $data[f2]="Dog"; $data[f3]="Cat"; $data[f4]="Dog"; $data[f5]="Dog"; $pic->attributes=$data; $pic->save(); } catch (Exception $e) { echo $e->getMessage(); }
没有再抛异常,但是转而查询oracle数据库,发现对应表是空的,记录没有插进去,这是怎么回事呢?
如果将
$data[f1]=5
改成$data[ ‘f1’]=5
反而会报错CDbCommand 无法执行 SQL 语句:
SQLSTATE[HY000]: General error: 928 OCIStmtExecute: ORA-00928: missing SELECT keyword
。下面是表的结构:
create table abc ( f1 Number(8) PRIMARY KEY , f2 varchar(250) , f3 varchar(500) , f4 varchar(500) , f5 varchar(500) );
并添加了触发器,为f1赋值。
-
我基本上可以得到结论了:
正确的写法是:try { $pic=new abc; $data[‘f1’]=5; $data[’f2‘]="Dog"; $data[‘f3’]="Cat"; $data[’f4‘]="Dog"; $data[‘f5’]="Dog"; $pic->attributes=$data; $pic->save(); } catch (Exception $e) { echo $e->getMessage(); }
但是Yii和oracle之间的兼容性存在一些问题,导致会出现:
SQLSTATE[HY000]: General error: 928 OCIStmtExecute: ORA-00928: missing SELECT keyword
这个问题似乎无法解决,只能放弃了。
onunix china
注册时间:2012-03-19
最后登录:1970-01-01
在线时长:0小时0分
最后登录:1970-01-01
在线时长:0小时0分
- 粉丝2
- 金钱1145
- 威望0
- 积分1145