对于数据表定义式未定义主键或未定义主键为自增字段时,LAST_INSERT_ID 函数未定义的错误。
用的sqlite2,驱动用的sqlite.php,调用create()出错,并没有手写sql。后续我将对代码进行研究争取解决此问题
具体Bug再现代码为:(代码来自Fleaphp论坛:http://www.fleaphp.org/bbs/viewthread.php?tid=2559)
Code
require('./FLEA/FLEA.php');
FLEA::init();
// 准备数据库连接信息
$dsn = array(
'driver' => 'sqlite',
'db' => 'test.db',
);
// 指定数据库连接设置,TableDataGateway 会自动取出 dbDSN 设置来连接数据库
set_app_inf('dbDSN', $dsn);
// 初始化 FleaPHP 运行环境
FLEA::init();
// 由于 FLEA_Db_TableDataGateway 并不是自动载入的,因此需要明确载入
FLEA::loadClass('FLEA_Db_TableDataGateway');
// 从 FLEA_Db_TableDataGateway 派生 Posts 类
class Posts extends FLEA_Db_TableDataGateway
{
// 指定数据表名称
var $tableName = 'posts';
// 指定主键字段名
var $primaryKey = 'post_id';
}
// 构造 Posts 实例
$modelPosts =& new Posts();
// 创建一条新记录,并返回新记录的主键值
$row = array(
'title' => 'First post',
'body' => 'First post body',
);
$newPostId = $modelPosts->create($row);//这句会出问题,请问如何解决?
echo $newPostId;
// 读取刚刚创建的新记录
$post = $modelPosts->findAll();
// 输出记录内容
dump($post);