ci mysql pdo_【CI PDO】CI框架下 Mysql PDO 使用方法小记

1、设置pdo链接配置信息

my_config.php

$config['mysql_host'] = 'mysql:dbname=test_db;host=127.0.0.1';

$config['mysql_username'] = 'root';

$config['mysql_passwd'] = '1234';

$config['mysql_db'] = 'test_db';

$config['dbdriver'] = 'pdo';

database.php

include(APPPATH."config/my_config.php");

......

$db['default']['hostname'] = $config['mysql_host'];

$db['default']['username'] = $config['mysql_username'];

$db['default']['password'] = $config['mysql_passwd'];

$db['default']['database'] = $config['mysql_db'];

$db['default']['dbdriver'] = $config['dbdriver'];

2、手动链接数据库

$this->load->database();

3、常见pdo数据库操作

3.1 查询

// 查询

$sql1 = "SELECT * FROM tbl_test1 WHERE condition1 = :condition1 and condition2 = :condition2";

$sql_data1 = Array(

":condition1" => 1,

":condition2" => "abc"

);

$sth1 = $this->db->conn_id->prepare($sql1);

$sth1->execute($sql_data1);

// 获取一条

$result1 = $sth1->fetch(PDO::FETCH_ASSOC);

// 获取所有

// $result1 = $sth1->fetchAll(PDO::FETCH_ASSOC);

// 判断是否成功

if($result1){

// 查询成功

}else{

// 查询失败

}

3.2 更新

// 更新

$sql2 = "UPDATE tbl_test1 SET `key1` = :val1, `key2` = :val2 WHERE condition1 = :condition1 and condition2 = :condition2";

$sql_data2 = Array(

":val1" => 1,

":val2" => "hello",

":condition1" => 1,

":condition2" => "abc"

);

$sth2 = $this->db->conn_id->prepare($sql2);

$sth2->execute($sql_data2);

// 判断是否成功

if($sth2->rowCount() >0){

// 更新成功

}else{

// 更新失败

}

3.3 插入

// 插入

$sql3 = "INSERT INTO tbl_test1 (`key1`,`key2`,`key3`,`key4`,`key5`) VALUES ( :val1 , :val2 , :val3 , :val4 , :val5 )";

$sql_data3 = Array(

"val1" => 1,

"val2" => "hello",

"val3" => 100.25,

"val4" => "随便写写"

"val5" => "2015-10-30"

);

$sth3 = $this->db->conn_id->prepare($sql3);

$result3 = $sth3->execute($sql_data3);

// 判断是否成功

if($result3){

// 插入成功

// 最新插入的数据的自增长id

// $this->db->conn_id->lastInsertId();

}else{

// 插入失败

if($sth3->errorCode() == 23000){

// 409,需要唯一的字段冲突重复了

}else{

// 其它

}

}

3.4 事务

// 事务

// 所有select语句都可以在事务开启前操作,即使查询不成功,也不会影响数据的完整性

// insert、update、delete相互关联,涉及数据完整性的操作,需要放在事务内部,一旦其中有一个操作失败,就进行事务回滚,以确保事务完整

try{

// do select here

// 关闭 PDO 的自动提交

$this->db->conn_id->setAttribute(PDO::ATTR_AUTOCOMMIT, false);

// 开启异常处理

$this->db->conn_id->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// 开启一个事务

$this->db->conn_id->beginTransaction();

// do insert、update、delete

// insert、update、delete失败的时候抛出异常

if($sth2->rowCount() <= 0){

throw new PDOException('Update Failed');

}

// 手动提交

$this->db->conn_id->commit();

}catch(PDOException $e){

// 事务回滚,抛出异常

$this->db->conn_id->rollBack();

$return = Array(

"code" => 500,

"data" => $e->getMessage()

);

return $return;

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值