Kohana 数据库
只要不使用官方网站的教程,自己摸索出来的,有一个错误,当我们指了出来,哦,,好吧共同进步~
首先配置:modules\database\config\database.php
<?php 'default' => array( 'type' => 'pdo', 'connection' => array( /** * The following options are available for PDO: * * string dsn Data Source Name * string username database username * string password database password * boolean persistent use persistent connections? */ 'dsn' => 'mysql:host=localhost;dbname=kohana', 'username' => '******',// 'password' => '******',// 'persistent' => FALSE, ), /** * The following extra options are available for PDO: * * string identifier set the escaping identifier */ 'table_prefix' => 'ko_', 'charset' => 'utf8', 'caching' => FALSE, 'profiling' => TRUE, ),
能够配置多个数据库配置哦~
配置好了之后就能够使用咯
配置完了就能够使用咯
在你的控制器中就能够这样
数据库实例
有两种数据库实例
1.DB数据库实例
2. database数据库实例
当中DB是对database的再次封装
以下描写叙述两个数据库实例的使用
Database
取得方法:
<?php $database=Database::instance();//能够取得database实例 #例外在模型中,dababase做为模型构造函数的唯一一个传递參数,并在模型中有$this->_db属性 $database=$this->_db;
用法:(如果在模型中)
插入数据:
<?php
$sql="INSERT INTO `kohana`.`user` (`name` ,`age` )VALUES ( 'test', '1'), ( 'test2', '2')"; $dat=$this->_db->query(Database::INSERT,$sql,false);
# return 返回的两个值中,第一个是自己主动增长的ID,假设有的话,第二是影响的行数
<?php $sql="UPDATE `ko_users` SET `user_name` = 'test111q1' "; $dat=$this->_db->query(Database::UPDATE,$sql,false); #return 返回影响行数
删除数据:
<?php $sql="DELETE FROM `kohana`.`user` WHERE `user`.`id` = 1"; $dat=$this->_db->query(Database::DELETE,$sql,false); #return 返回影响行数
查询数据:
<?php
$sql="select * from ko_com_var";
$res=$this->_db->query(Database::SELECT,$sql,false);
#得到全部查询数据
$res->as_array();
#得到一条查询结果
$res->offsetGet(0);
#取得特定记录的指定字段值
$res->get("name");
#移动指针并取得指定字段
$res->next()->get("name");
$res->prev()->get("name");
#计算取得结果总数
$res->count();
#还有其它方法不在一一罗列,请查看手冊
其它经常使用帮助函数:
<?php #过滤字符串用,不知道为什么放到这个单例中,该是公用才对~,也许是每中数据库的过滤的东西有区别吧 $str=$this->_db->escape("ddddd ddd"); #表前缀,这个经常使用~ $str=$this->_db->table_prefix(); #还有其它查看帮助,不介绍咯
DB实例使用(下面演示在Kohana环境就可以)
<?php
$sql="INSERT INTO `kohana`.`user` (`name` ,`age` )VALUES ( 'test', '1'), ( 'test2', '2')";
#事实上也能够用Database::UPDATE,结果仅仅返回影响行数,只是还是按规范好.呵呵~,上述Database也能够
$dat=DB::query(Database::INSERT,$sql);
$row=$dat->execute();
#返回的两个值中,第一个是自己主动增长的ID,假设有的话,第二是影响的行数
Kohana::debug($row);
数据更新:
<?php $sql="UPDATE `user` SET `name` = 'test2' WHERE `user`.`id` =1 "; $dat=DB::query(Database::UPDATE,$sql); $row=$dat->execute(); #返回影响行数 echo Kohana::debug($row);
数据删除:
<?php
$sql="DELETE FROM `kohana`.`user` WHERE `user`.`id` = 1";
$dat=DB::query(Database::DELETE,$sql);
$row=$dat->execute();
#返回影响行数
echo Kohana::debug($row);
数据查询:
<?php $sql="select * from user"; $dat=DB::query(Database::SELECT,$sql); #指定数据库取数据 $row=$dat->execute($database)->offsetGet(0); #默认数据库取数据,和上面的Database一样,都是返回Database_Result_Cached对象,实现了迭代器模式 $rus=$dat->execute(); #取得部分结果 $row=$rus->offsetGet(0); #取得全部结果 $allrow=$rus->as_array(); #取得特定记录的指定字段值 $no1name=$rus->get("name"); #移动数组指针,并取指定字段值 $no2name=$rus->next()->get("name"); #当前指针 echo $rus->key(); #移动数组指针,并取指定字段值 echo $no1name=$rus->prev()->get('name'); #取行数 echo $rus->count();
另外一种:(官网文档称之为查询器模式,不好用,呵呵,简单的能够用下)
<?php $query = DB::insert('user', array('user', 'age')) ->values(array('test1', '11')); $query->execute(); #返回和上面一样
<?php $query = DB::update('user') ->set(array('age' => '100')) ->where('user', '=', 'test1'); $query->execute(); #返回和上面一样
删除数据:
<?php $query = DB::delete('user') ->where('age', 'IN', array('100', '11')); $query->execute(); #返回和上面一样
查询数据:
<?php $query = DB::select()->from('user')->where("id","=","1"); $res=$query->execute(); #和上面一样,$res是Database_Result_Cached对象 $res->as_array(); #其它方法不演示了~
附注:
数据绑定,抄官方实例一个,该非常easy,比較容易看懂
<?php $query = DB::query(Database::INSERT, 'INSERT INTO users (username, password) VALUES (:user, :pass)') ->bind(':user', $username) ->bind(':pass', $password); foreach ($new_users as $username => $password){ $query->execute(); }
基本上它,我不经常使用,我不形容了,只是主要介绍了完整的,
版权声明:本文博主原创文章,博客,未经同意不得转载。