CodeIgniter学习笔记 Item4--CI中的数据库操作_codeigniter4 odbc(1)

数据结构与算法

这一块在笔试、面试的代码题中考核较多,其中常考的数据结构主要有:数组、链表、队列、栈、Set、Map、哈希表等,不同数据结构有不同的方法以及储存原理,这些算是技术岗的必备知识。算法部分主要分为两大块,排序算法与一些其他算法题

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

排序算法根据考频高低主要有:快速排序、归并排序、堆排序、冒泡排序、插入排序、选择排序、希尔排序、桶排序、基数排序、Timsort这十种,这类考核点要么是算法的时间、空间复杂度、稳定度,要么是直接手写代码,故在理解算法原理的同时,对JS语言版的排序算法代码也要加强记忆。

  • 二叉树层序遍历
  • B 树的特性,B 树和 B+树的区别
  • 尾递归
  • 如何写一个大数阶乘?递归的方法会出现什么问题?
  • 把多维数组变成一维数组的方法
  • 知道的排序算法 说一下冒泡快排的原理
  • Heap 排序方法的原理?复杂度?
  • 几种常见的排序算法,手写
  • 数组的去重,尽可能写出多个方法
  • 如果有一个大的数组,都是整型,怎么找出最大的前 10 个数
  • 知道数据结构里面的常见的数据结构
  • 找出数组中第 k 大的数组出现多少次,比如数组【1,2, 4,4,3,5】第二大的数字是 4,出现两次,所以返回 2
  • 合并两个有序数组
  • 给一个数,去一个已经排好序的数组中寻找这个数的位 置(通过快速查找,二分查找)

);


在使用数据库前,需要使用装载器来加载数据库对象



$this->load->database();


装载完成后,$this->db就是这个数据库对象,以后的数据操作都是调用这个对象的方法进行


首先定义SQL语句:



$sql = ‘SELECT * FROM user’;


再调用db对象的query方法进行查询



$result = t h i s − > d b − > q u e r y ( this->db->query( this>db>query(sql);


返回值$result是一个对象,通过调用它的方法可以返回不同形式的结果,例如:调用它的result()方法获取查询结果



$users = $result->result();


此时,`$users`是一个对象数组,或者调用它的result\_array()方法获取关联数组查询结果



$users = $result->result_array();


调用row()方法以对象形式返回第一条记录或第几条记录



$users = $result->row();


但是,如果SQL是增、删、修改语句,query()方法将返回TRUE或FALSE,此时通过db的方法可以获取执行的结果,比如:



$this->db->affected_rows(); // 获取影响的行数
$this->db->insert_id(); // 获取插入数据的id


在执行数据库操作前,由于不知道在查询前`$this->db`是否已经生成,因此都需要调用`$this->load->database()`方法,通过修改/application/config/autoload.php文件,可以让CI自动加载数据库



$autoload[‘libraries’] = array(‘database’);


如果SQL语句中的变量过多,会影响语句的编写,这时可以采用占位符来解决



$data[0] = ‘dj’;
$data[1] = ‘123456’;
$sql = “INSERT INTO user (account, password, usertype, username) VALUES (‘1231’, ?, ‘1’, ?)”;
$result = t h i s − > d b − > q u e r y ( this->db->query( this>db>query(sql, $data);


传入的数组中的元素会依次取代SQL中的?,生成实际的SQL语句


备注:在测试这段代码时,由于错误的在字段名两侧加上了’,造成一直报错,引以为戒.


### **连接你的数据库**


有两种方法连接数据库:


**自动连接**   
 “自动连接” 特性将在每一个页面加载时自动实例化数据库类。要启用“自动连接”, 可在 application/config/autoload.php 中的 library 数组里添加 database:



$autoload[‘libraries’] = array(‘database’);


**手动连接**   
 如果你只有一部分页面需要数据库连接,你可以在那些有需要的函数里手工添加 如下代码来连接数据库,或者写在类的构造函数里,让整个类都可以访问:



$this->load->database();


如果 database() 函数没有指定第一个参数,它将使用数据库配置文件中 指定的组连接数据库。对大多数人而言,这是首选方案。


可用的参数   
 数据库连接值,用数组或DSN字符串传递;



TRUE/FALSE (boolean) - 是否返回连接ID(参考下文的“连接多数据库”);
TRUE/FALSE (boolean) - 是否启用查询构造器类,默认为 TRUE 。


**手动连接到数据库**   
 这个函数的第一个参数是**可选的**,被用来从你的配置文件中 指定一个特定的数据库组,甚至可以使用没有在配置文件中定义的 数据库连接值。下面是例子:


从你的配置文件中选择一个特定分组:



$this->load->database(‘group_name’);


其中 group\_name 是你的配置文件中连接组的名字。


连接一个完全手动指定的数据库,可以传一个数组参数:



$config[‘hostname’] = ‘localhost’;
$config[‘username’] = ‘myusername’;
$config[‘password’] = ‘mypassword’;
$config[‘database’] = ‘mydatabase’;
$config[‘dbdriver’] = ‘mysqli’;
$config[‘dbprefix’] = ‘’;
$config[‘pconnect’] = FALSE;
$config[‘db_debug’] = TRUE;
$config[‘cache_on’] = FALSE;
$config[‘cachedir’] = ‘’;
$config[‘char_set’] = ‘utf8’;
$config[‘dbcollat’] = ‘utf8_general_ci’;
t h i s − > l o a d − > d a t a b a s e ( this->load->database( this>load>database(config);


注解


对于 PDO 驱动,你应该使用 $config[‘dsn’] 取代 ‘hostname’ 和 ‘database’ 参数:



$config[‘dsn’] = ‘mysql:host=localhost;dbname=mydatabase’;


或者你可以使用数据源名称(DSN,Data Source Name)作为参数,DSN 的格式必须类似于下面这样:



$dsn = ‘dbdriver://username:password@hostname/database’;
t h i s − > l o a d − > d a t a b a s e ( this->load->database( this>load>database(dsn);


当用 DSN 字符串连接时,要覆盖默认配置,可以像添加查询字符串一样添加配置变量。



$dsn = ‘dbdriver://username:password@hostname/database?char_set=utf8&dbcollat=utf8_general_ci&cache_on=true&cachedir=/path/to/cache’;
t h i s − > l o a d − > d a t a b a s e ( this->load->database( this>load>database(dsn);


连接到多个数据库   
 如果你需要同时连接到多个不同的数据库,可以这样:



$DB1 = $this->load->database(‘group_one’, TRUE);
$DB2 = $this->load->database(‘group_two’, TRUE);


注意:将 “group\_one” 和 “group\_two” 修改为你要连接的组名称 (或者像上面介绍的那样传入连接值数组)


第二个参数 TRUE 表示函数将返回数据库对象。


注解


当你使用这种方式连接数据库时,你将通过你的对象名来执行数据库命令, 而不再是通过这份指南中通篇介绍的,就像下面这样的语法了:



$this->db->query();
$this->db->result();
etc…


取而代之的,你将这样执行数据库命令:



$DB1->query();
$DB1->result();
etc…


注解


如果你只是需要切换到同一个连接的另一个不同的数据库,你没必要创建 独立的数据库配置,你可以像下面这样切换到另一个数据库:



t h i s − > d b − > d b s e l e c t ( this->db->db_select( this>db>dbselect(database2_name);

react和vue的比较

相同
1)vitual dom
2)组件化
3)props,单一数据流

不同点
1)react是jsx和模板;(jsx可以进行更多的js逻辑和操作)
2)状态管理(react)
3)对象属性(vue)
4)vue:view——medol之间双向绑定
5)vue:组件之间的通信(props,callback,emit)

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

状态管理(react)
3)对象属性(vue)
4)vue:view——medol之间双向绑定
5)vue:组件之间的通信(props,callback,emit)

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

[外链图片转存中…(img-07J1mWW5-1715775608339)]

[外链图片转存中…(img-uG3viWdj-1715775608340)]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值