增删查改

创建于 2022-07-27 / 最近更新于 2022-07-27 / 923
字体: [默认] [大] [更大]

掌握了数据库表链接后,下面我们开始学习增删查改的方法。在阅读本章之前,您务必需要掌握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 人点赞过