分享
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
$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 = $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';
$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';
$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';
$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...
注解
如果你只是需要切换到同一个连接的另一个不同的数据库,你没必要创建 独立的数据库配置,你可以像下面这样切换到另一个数据库:
$this->db->db_select($database2\_name);
重新连接 / 保持连接有效
当你在处理一些重量级的 PHP 操作时(例如处理图片),如果超过了数据库的超时值, 你应该考虑在执行后续查询之前先调用 reconnect() 方法向数据库发送 ping 命令, 这样可以优雅的保持连接有效或者重新建立起连接。
$this->db->reconnect();
手动关闭连接
虽然 CodeIgniter 可以智能的管理并自动关闭数据库连接,你仍可以用下面的方法显式的关闭连接:
$this->db->close();
查询
$this->db->query();
要提交一个查询,用以下函数:
$this->db->query('YOUR QUERY HERE');
query() 函数以object(对象)的形式返回一个数据库结果集. 当使用 “read” 模式来运行查询时, 你可以使用“显示你的结果集”来显示查询结果; 当使用 “write” 模式来运行查询时, 将会仅根据执行的成功或失败来返回 TRUE 或 FALSE. 当你需要将返回的结果赋值给一个自定义变量的时候, 你可以这样操作:
$query = $this->db->query('YOUR QUERY HERE');
$this->db->simple_query();
这是一个简化版本的 $this->db->query() 函数. 它仅返回 True(bool) 和 False(bool) 以表示查询成功与失败. 它将不会返回查询数据集,无法设置查询计时器(设置环境变量),无法编译绑定数据,不能够存储查询诊断信息。简单地说,他是一个用于提交查询的函数,对于大多数用户而言并不会使用到它。
手工添加数据库前缀
如果你需要为一个数据库手工添加前缀,你可以使用以下步骤。
#### 最后
**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)**
就答题情况而言,第一问100%都可以回答正确,第二问大概只有50%正确率,第三问能回答正确的就不多了,第四问再正确就非常非常少了。其实此题并没有太多刁钻匪夷所思的用法,都是一些可能会遇到的场景,而大多数人但凡有1年到2年的工作经验都应该完全正确才对。
只能说有一些人太急躁太轻视了,希望大家通过此文了解js一些特性。
并祝愿大家在新的一年找工作面试中胆大心细,发挥出最好的水平,找到一份理想的工作。