增删查改
创建于 2022-07-27 / 最近更新于 2022-07-27 /
1284
字体:
[默认]
[大]
[更大]
掌握了数据库表链接后,下面我们开始学习增删查改的方法。在阅读本章之前,您务必需要掌握PHP中数据库预处理和占位符的知识点,否则您极度容易写出不安全的SQL。
插入数据
insert()
插入数据,我们提供了insert()方法。参数如下:
参数 | 类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
$param | array | 是 | 空白数组 | 结构如下:[ '数据库字段1' => '插入的数据1', '数据库字段2' => '插入的数据2', .... ] |
- 成功则返回插入数据库的自增ID。没有自增值则返回1
- 失败则返回false
调用示例
$id = $this->db('article')->insert([
'article_title' => '新的文章',
'article_time' => time(),
]);
删除数据
delete()
删除数据,我们提供了delete()方法。参数如下:
参数 | 类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
$param | array | 否 | 空白数组 | 根据where()方法中的占位符填写数组。 |
- 成功则返回返回影响行数。
- 失败则返回false
调用示例
$this->db('article')->where('article_id = :article_id')->delete([
'article_id' => '1'
]);
查询
find()
查询单一条数据,我们提供了find()方法。find()方法原理是生成一条limit 1的SQL语句。参数如下:
参数 | 类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
$param | array | 否 | 空白数组 | 根据连贯操作的方法中填写的占位符去填写本参数数组。 |
- 成功则返回查询到内容的一维数组
- 失败则返回false
调用示例
$res = $this->db('article')->where('article_id = :article_id')->find([
'article_id' => '1'
]);
select()
要查询多条数据,我们提供了select()方法。参数如下:
参数 | 类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
$param | array | 否 | 空白数组 | 根据连贯操作的方法中填写的占位符去填写本参数数组。 |
- 成功则返回查询到内容的二维数组
- 失败则返回false
调用示例
$res = $this->db('article')->where('article_doc_id = :article_doc_id ')->select([
'article_doc_id' => '1'
]);
//返回article_doc_id 为1的所有文章二维数组。
fetch()
有时候要编写比较复杂的SQL,find()结合连贯操作也无法满足编写需求,这时候可以编写原生SQL,然后用fetch()获得一条数据。参数如下:
参数 | 类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
$sql | string | 是 | 无 | 原生SQL |
$param | array | 否 | 空白数组 | 根据$sql中声明的占位符填写数组 |
- 成功则返回查询到内容的一条一维数组记录
- 失败则返回false
- 不论SQL是否有limit 1,本方法都只返回第一条记录
调用示例
$sql = "SELECT * FROM {$this->prefix}article WHERE article_id = :article_id "
$res = $this->db()->fetch($sql, [
'article_id' => 1
]);
getAll()
和fetch()一样,只是getAll是通过原生SQL去查询多条数据。参数如下:
参数 | 类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
$sql | string | 是 | 无 | 原生SQL |
$param | array | 否 | 空白数组 | 根据$sql中声明的占位符填写数组 |
- 成功则返回查询到内容的二维数组
- 失败则返回false
调用示例
$sql = "SELECT * FROM {$this->prefix}article WHERE article_doc_id = :article_doc_id "
$res = $this->db()->getAll($sql, [
'article_doc_id' => 1
]);
修改数据
update()
修改数据可以使用update()方法。参数如下:
参数 | 类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
$param | array | 否 | 空白数组 | 详细说明请查看下方详细说明。 |
- 成功则返回返回影响行数。
- 失败则返回false
- update()方法与别的方法不一样,连贯操作where()要放在一个noset的数组下。
- 待更新的字段和其他方法一样,以 '更新的值数据库字段' => '更新值' 填写。
- update()更新的SQL为覆写,要以追加形式更新本方法不适应。如:hit = hit + 1 这种就不合适了。
调用示例
$this->db('article')->where('article_id = :article_id')->update([
'noset' => [
'article_id' => '1',
],
'article_title' => '更新标题',
]);
其他
query()
增删查改中,除了查询提供了原生SQL,插入、更新和删除等动作都可以使用query()方法。参数如下:
参数 | 类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
$sql | string | 是 | 无 | 原生SQL |
$param | array | 否 | 空白数组 | 根据$sql中声明的占位符填写数组 |
- 成功则返回返回影响行数。
- 失败则返回false
调用示例
如update()方法提及的追加更新,可以在query()方法实现。
$this->db()->query(" UPDATE {$this->prefix}article SET article_hit = article_hit +1 WHERE article_id = :article_id ", [
'article_id' => 1
]);
getLastSql
有时候要调试SQL语句,知道最后执行的SQL语句。只需在执行的SQL下方调用getLastSql属性即可。
getLastSql大小写敏感,不要填写错误了。
要获取完整的SQL,记得别忘记开启调试模式。
$this->db('article')->select();
echo $this->db()->getLastSql; //会输出SQL: SELECT * FROM pes_article
getLastInsert
有时候要知道最后插入的ID值是什么,可以使用getLastInsert属性。
getLastSql大小写敏感,不要填写错误了。
//这里article表拥有自增值主键article_id,当前最后一条值为10
$this->db('article')->insert([
'article_title' => '新的文章',
'article_time' => time(),
]);
echo $this->db()->getLastSql; //会输出article表自增值的ID: 11
0 人点赞过