kohana框架DB操作方法详情,涉及到DB::select,DB::update, DB::delete和链表等常用操作数据方法
一.读取数据库记录 读取数据库记录需要使用到 DB::select() 方法
// 返回一个结果对象 $result = DB::select('column')->from('table_name')->execute(); // 结果作为数组返回 $result = DB::select('column')->from('table_name')->execute()->as_array(); // 结果作为标准类对象返回s $result = DB::select('column')->from('table_name')->as_object()->execute(); // 仅返回第一行 $result = DB::select('column')->from('table_name')->execute()->current(); 你可以按你所需要的在上面的示例中选择一个方法。 // 返回一个列 $result = DB::select('column')->from('table_name')->execute()->current(); //返回3列 $result = DB::select('column', 'column2', 'column3')->from('table_name')->execute()->current(); // 列名的别名 $result = DB::select(array('longcolumnname1', 'col1'), array('longcolumnname2', 'aliascol2'))->from('table_name')->execute()->current(); 你可以用 where() 方法来选择特定的记录 $result = DB::select()->from('table_name')->where('column','=','value')->execute();
二,在直接写SQL方式的增删改查:
1.直接写sql语句方式: 1).查询: $qu_relation_sql="select * from alipay_account where status = 1"; $totlemoney = DB::query(Database::SELECT, $qu_relation_sql)->execute('alipay')->current(); 2).修改: $qu_relation_sql="update alipay_account set totlemoney='$new_totlemoney' WHERE openid='" . $openid['openid'] . "' "; $totlemoney = DB::query(Database::UPDATE, $qu_relation_sql)->execute('alipay'); 3).删除: $totlemoney = DB::query(Database::DELETE, $qu_relation_sql)->execute('alipay'); 4)添加: $sql_bankinfo = " INSERT INTO `wp_bankinfo`( `openid`, `bank`, `name`, `bankcard`, `mobile`) VALUES ('" . $openid['openid'] . "','" . $_GET['bank'] . "','" . $_GET['card_name'] . "','" . $_GET['bank_num'] . "','" . $_GET['mobile'] . "') "; $insert_id = DB::query(Database::INSERT, $sql_bankinfo)->execute('weixin'); 2,不写sql语句:(alipay_account:表名 alipay:库名) 1).查询:上面第一读取数据库上有。 2).删除:DB::delete('alipay_account')->where('status','=',3)->execute('alipay'); 3)修改:DB::update('pages') ->set(array('views' => DB::expr('views + 1'))) ->where('id', '=', 1) ->execute(); 4)增加:DB::insert('alipay_account') ->columns(array_keys($in_account)) ->values(array_values($in_account)) ->execute('alipay');
三,数据表链表join
// This query will find all the posts related to "smith" with JOIN $query = DB::select('authors.name', 'posts.content')->from('authors')->join('posts')->on('authors.id', '=', 'posts.author_id')->where('authors.name', '=', 'smith'); // This query will find all the posts related to "smith" with LEFT JOIN $query = DB::select()->from('authors')->join('posts', 'LEFT')->on('authors.id', '=', 'posts.author_id')->where('authors.name', '=', 'smith'); $query = DB::select('username', array('COUNT("id")', 'total_posts') ->from('posts')->group_by('username')->having('total_posts', '>=', 10); SELECT `username`, COUNT(`id`) AS `total_posts` FROM `posts` GROUP BY `username` HAVING `total_posts` >= 10 $sub = DB::select('username', array('COUNT("id")', 'total_posts') ->from('posts')->group_by('username')->having('total_posts', '>=', 10); $query = DB::select('profiles.*', 'posts.total_posts')->from('profiles') ->join(array($sub, 'posts'), 'INNER')->on('profiles.username', '=', 'posts.username'); INSERT INTO `post_totals` (`username`, `posts`) SELECT `username`, COUNT(`id`) AS `total_posts` FROM `posts` GROUP BY `username` HAVING `total_posts` >= 10 $query = DB::select()->from('users') ->where_open() ->or_where('id', 'IN', $expired) ->and_where_open() ->where('last_login', '<=', $last_month) ->or_where('last_login', 'IS', NULL) ->and_where_close() ->where_close() ->and_where('removed','IS', NULL); SELECT * FROM `users` WHERE ( `id` IN (1, 2, 3, 5) OR ( `last_login` <= 1276020805 OR `last_login` IS NULL ) ) AND `removed` IS NULL $query = DB::update('users')->set(array('login_count' => DB::expr('login_count + 1')))->where('id', '=', $id); UPDATE `users` SET `login_count` = `login_count` + 1 WHERE `id` = 45