原生SQL查询有 query() 和 execute() 两个方法:
query():用于 SQL 查询操作,并返回符合查询条件的数据集
execute():更新和写入数据的 SQL 操作,返回影响的记录数
query()
query() 方法是用于 SQL 查询操作,和select()方法一样返回符合查询条件的数据集.
例子:
public function read(){
// 实例化一个空模型,没有对应任何数据表
$Dao = M();
//或者使用 $Dao = new Model();
if($list){
$this-assign('list', $list );
} else {
$this-error($Dao-getError());
}
对于 query() 方法返回的数据集,跟 select() 一样,可以在模板里直接循环输出.
execute()
execute() 方法用于更新和写入数据的 SQL 操作(注:非查询操作,无返回数据集),返回影响的记录数.
if($num){
echo '更新 ',$num,' 条记录.';
}else{
echo '无记录更新';
如果查询比较复杂或一些特殊的数据操作不能通过 ThinkPHP 内置的 ORM 和 ActiveRecord 模式实现时,就可以通过直接使用原生 SQL 查询来实现.
注意:以上都是 user 没有表前缀的例子,在查询语句中,查询的表应该写实际的表名字(包括前缀).
mysqli有两种数据库连接方式:
①.、面向过程式连接:
mysqli_connect('localhost','xxx','xxx','xxx');
mysqli_query('');
后使用mysqli_fetch_assoc方法获取到数据.
$mysqli?=?new?mysqli("localhost",?"my_user",?"my_password",?"world");
$result?=?$mysqli-query('');
后使用$result-fetch_assoc()获取数据.
至于num_rows是获取查询到的行数的方法.
本节课我们来了解一下数据库的数据查询方式,单数据、数据集和其它查询.
一.单数据查询
① Db::table()中table必须指定完整数据表(包括前缀);
SELECT * FROM +tp_user+ LIMIT 1
Db::table('tp_user')-where('id', 1)-findOrFail()
二.数据集查询
① 想要获取多列数据,可以使用select()方法;
Db::table('tp_user')-select(); SELECT * FROM +tp_user+
三.其它查询
① 通过value()方法,可以查询指定字段的值(单个),没有数据返回null;
$user = Db::table('tp_user')-select()-toArray(); dump($user);
Db::name('user')-column('username', 'id');
dump($user);
echo 1; });
$cursor = Db::table('tp_user')-cursor(); foreach($cursor as $user){