ThinkPHP 5实战
上QQ阅读APP看书,第一时间看更新

5.2 基本操作

数据库操作离不开CURD(Create/Update/Read/Delete,俗称增删改查)。ThinkPHP 5的DAO基本操作如下:

上文中提到过DAO层是相对比较底层的,所以需要手写SQL。ThinkPHP 5中Db类负责底层SQL操作,该类会自动读取默认的数据库连接信息,当然你也可以手动指定数据库配置来在特定数据库执行SQL语句。

(1)添加数据

      Db::execute('INSERT INTO user (username, password) VALUES
   (?,?)',['admin',md5('111111')]);

(2)更新数据

     Db::execute(`UPDATE user SET password=? WHERE
  username=?`,[md5('123456'),'admin']);

(3)删除数据

     Db::execute('DELETE FROM user WHERE username=?',['admin']);

(4)查找数据

     Db::query('SELECT * FROM user WHERE username=?',['admin']);

在上面的示例中,不知道各位读者有没有发现不同?其实数据库操作主要有两种:数据操作和数据查询。这两种操作的返回结果是不同的,数据查询中返回的是数据列表,而数据操作中返回的是受影响行数,所以在使用时需要区分execute和query。

SQL语句中的“?”是占位符,是为了解决SQL注入问题而出现的,早期PHP开发者使用mysql_系列函数操作数据库时都是手写SQL,有极大的安全风险。而使用SQL占位符之后可以规避这种风险,使用也很简单,“?”的顺序和后面数组参数的顺序一一对应。

(5)在特定数据库指定操作

上文中提到了Db类使用默认的数据库连接来操作,而如果想使用其他库的话需要传入到config方法中,代码如下:

     Db::config($connection)->query('SELECT * FROM user');