1.
redirect方法默认使用302跳转,如不需要可以使用第二个参数进行301跳转。
$this->redirect('http://thinkphp.cn',301);
302重定向是暂时的重定向,搜索引擎会抓取新的内容而保存旧的网址。由于效劳器前往302代码,搜索引擎以为新的网址只是暂时的。
2.
数据查询由低到高分三个层次:
- 数据库原生查询(SQL查询);
- 数据库链式查询(查询构造器);
-
模型的对象化查询;
原生查询
-
包括
query
和execute
两个方法,分别用于查询和写入:create,delete,update,select -
更新记录$result = Db::execute('update think_data set name = "framework" where id = 5 '); dump($result);
// 查询数据$result = Db::query('select * from think_data where id = 5'); dump($result);
-
query方法返回的结果是一个数据集(数组),如果没有查询到数据则返回空数组;
-
query
方法用于查询,默认情况下返回的是数据集(二维数组),execute
方法的返回值是影响的行数。 -
为了简化代码,通常的做法是事先在配置文件中定义好多个数据库的连接配置,例如,我们在应用配置文件(
application/config.php
)中添加配置如下:// 数据库配置1'db1' => [ // 数据库类型'type' => 'mysql', // 服务器地址'hostname' => '127.0.0.1', // 数据库名'database' => 'thinkphp', // 数据库用户名'username' => 'root', // 数据库密码'password' => '123456', // 数据库连接端口'hostport' => '', // 数据库连接参数'params' => [], // 数据库编码默认采用utf8'charset' => 'utf8', // 数据库表前缀'prefix' => 'think_', ], // 数据库配置2'db2' => [ // 数据库类型'type' => 'mysql', // 服务器地址'hostname' => '127.0.0.1', // 数据库名'database' => 'test', // 数据库用户名'username' => 'root', // 数据库密码'password' => '', // 数据库连接端口'hostport' => '', // 数据库连接参数'params' => [], // 数据库编码默认采用utf8'charset' => 'utf8', // 数据库表前缀'prefix' => 'test_', ],
然后就可以直接在
connect
方法中传入配置参数进行切换数据库连接,例如:$result = Db::connect('db1')->query('select * from think_data where id = 1'); $result = Db::connect('db2')->query('select * from think_data where id = 1');
connect
方法中的配置参数需要完整定义,并且仅仅对当此查询有效,下次调用Db
类的时候还是使用默认的数据库连接。如果需要多次切换数据库查询,可以使用:$db1 = Db::connect('db1'); $db2 = Db::connect('db2'); $db1->query('