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环境就可以)

有两种方式:

第一种:

下面的execute(); 有一个数据库适配器參数,当有多个数据连接的时候指定操作那个数据库,就是配置文件的那个KEY值

插入数据:

<?

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();
}

基本上它,我不经常使用,我不形容了,只是主要介绍了完整的,

版权声明:本文博主原创文章,博客,未经同意不得转载。

时间: 2024-08-06 03:46:11

Kohana 数据库的相关文章

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 use

PHP Kohana入门体验教程

说明:1.文中出现一个英文字符串后面加了一个斜杠“/”的话表示它是一个文件夹.2.如果一个英文字符串前面出现了“/”表示在网页空间的根目录下,一般文件加我就不在前面加“/”了,除非是2层以上的目录.3.把 Kohana 的解压包放到适当的位置,我是直接放在网页空间的根目录,如果放在其他位置需要相应的修改 url,需要先让 apache 找到 kohana 的 index.php 文件. Kohana 分两个文件夹,system/ 和 application/ ,以及一个 /index.php 文

kohana学习

<?php I18n::lang('en-us'); HTTP::$protocol Kohana::$environment Kohana::init(array( 'base_url' => '/', 'index_file'=>'index.php', 'charset'=>'utf-8', 'errors'=> TRUE , //开启错误处理 'profile'=> TRUE , //剖析 生产模式时候要记得开启 'lifetime'=>60, //设置缓

kohana orm巧用字段备注支持扩展

1.SELECT * FROM `bota_language` WHERE `type` = 'order_type'; id  key     value      type        ------  ------  ---------  ------------   446  1       原单         order_type     447  2       改签单        order_type     448  3       退票单        order_type

数据库介绍与分类

目录 数据库介绍与分类... 1 1.1 数据库介绍... 2 1.1.1什么是数据库... 2 1.2数据库的种类... 2 1.2.1关系型数据库介绍... 2 1.2.2非关系型数据库介绍... 3 1.3 常用关系型数据库产品介绍... 4 1.3.1 Oracle数据库... 4 1.3.2 MySQL数据库... 5 1.3.3 MariaDB数据库... 5 1.3.4 SqlServer数据库... 6 1.3.5 Access数据库... 6 1.3.6 其他不常用数据库...

win7 64位系统 PB连接oracle数据库出现“oracle library oci.dll could not be loaded”问题的解决方法

今天与大家分享一个自己的学习笔记,希望能给遇到同样问题的人带来帮助. 不知道大家在win7 64位系统下用 PB连接oracle数据库时,是否遇到过“oracle library oci.dll could not be loaded”问题. 今天,在win7 64位系统下用 PB连接oracle数据库时,一直出现上述错误,在百度上找了很久,都没有找到一个完整的解决方案,咨询了很多人,(他们都说是我的PB和oracle没装好,但我装的时候没出现任何问题,一切都很顺利,而且PB和oracle都能正

C#与数据库访问技术总结(八)之ExecuteNonQuery方法

ExecuteNonQuery方法 ExecuteNonQuery方法主要用来更新数据. 通常使用它来执行Update.Insert和Delete语句. 该方法返回值意义如下: 对于Update.Insert和Delete语句,返回值为该命令所影响的行数. 对于所有其他类型的语句,返回值为-1. Command对象通过ExecuteNonQuery方法更新数据库的过程非常简单,需要进行的步骤如下: (1)创建数据库连接. (2)创建Command对象,并指定一个SQL Insert.Update

Oracle 10g通过创建物化视图实现不同数据库间表级别的数据同步

摘自:http://blog.csdn.net/javaee_sunny/article/details/53439980 目录(?)[-] Oracle 10g 物化视图语法如下 实例演示 主要步骤 在A节点创建原表和物化视图日志 在B节点创建连接A节点的远程链接 在B节点处创建目标表和与目标表名称相同的物化视图 在B节点处刷新物化视图 升级采用存储过程定时任务JOB方式定时刷新物化视图 进一步优化 文章更新记录 参考文章 Oracle 10g 物化视图语法如下: create materia

Linux环境下MySQL数据库用SQL语句插入中文显示 “问号或者乱码 ” 问题解决!

问题: 在普通用户权限下执行 mysql -u root -p进入mysql数据库,中间步骤省略,插入数据:insert into 库名(属性)values('汉字'); 会出现如下提示:  Query OK, 1 row affected, 1 warning (0.00 sec)    表明出现错误,没有插入成功,然后执行select * from 表名   就会出现如下的问题:显示的表中出现乱码或者问号. 如图: 解决方案: 首先重新打开一个终端窗口(方便操作),进入root用户模式 执行