来来来,新的一节出炉了。这一节大家一起了解,Laravel如何对Mysql进行CURD。

我们回顾一下,PHP操作Mysql无非就是通过五个要素:host(地址)、username(用户名)、password(密码)、database(数据库名)和charset(字符集),就可以连接并操作数据库了。所以,Laravel也逃不出这个套路,我们需要了解的也就只有配置文件和CURD的方法。

1、配置文件

Laravel关于数据库的配置文件是放在/config/database.php中,在这个文件中有一个mysql配置节,如下所示:

大家会发现,在这里就有刚刚提到的连接数据库五个要素。同时,大家也会发现,这五个要素,都是env()函数的返回值。那env()从哪里读出这些值呢?这又要提到第一讲里面的.env文件。在项目根目录下有个/.env,里面有一堆配置,env()函数就是从这个文件中读取相应的值返回,如果读不到,才返回第二个参数。相关的配置如下:

2、操作前的准备

现在假设test数据库中,有一张名为course的表,结构如下:

其中uid为主链

3、查:返回数组,每个元素都是stdClass

1) 普通查询

use Illuminate\Support\Facades\DB;

$course=DB::select("SELECT * FROM course");
foreach ($course as $val)
{
echo $val->uid,$val->cname,$val->teacher,'<br />';
}

2) 参数绑定

$course=DB::select("SELECT * FROM course WHERE uid=? AND cname=?",[1,'php']);
foreach ($course as $val)
{
echo $val->uid,$val->cname,$val->teacher,'<br />';
}

3) 命名参数绑定

$course=DB::select("SELECT * FROM course WHERE uid=:uid AND cname=:cname",["uid"=>1,"cname"=>'php']);
foreach ($course as $val)
{
echo $val->uid,$val->cname,$val->teacher,'<br />';
}

建议:参数传递时,用(命名)参数绑定的方式,有利于防止sql注入攻击

4、删查改:

//添加成功返回true,插入失败抛出异常(比如主键冲突)
$rtl=DB::insert('INSERT INTO course (uid,cname,num,teacher) values (?, ?, ?,?)', [1,'python', 5, 'ckb']); //返回删除的行数
$rtl=DB::delete("DELETE FROM course WHERE uid>=2"); //返回被更新的行数,失败抛出异常(比如主键主冲)
$rtl=DB::update("UPDATE course SET
teacher='abc'
WHERE uid=3");

建议:这三个操作,在参数传递时,也可以用(命名)参数绑定,并用也建议使用(命名)参数绑定

5、无需返回值执行sql语句

DB::statement("DROP TABLE course");

实际上,上述所有CURD的语句,都可以用statement执行。这个函数,执行成功返回true,执行失败抛出异常

6、事务

1) 函数形态

DB::transaction(function () {
//这里进行CURD
//如果想要回滚,可直接抛出异常
});

2) 手动声明

try
{
DB::beginTransaction();
//进行CURD
//如果想要回滚,抛出异常
DB::rollBack();
}
catch(Exception $e)
{
DB::rollBack(); //接住异常,在这里回滚
}

到这里,Laravel的CURD介绍完了,我们可以很好地对数据库进行操作了。关于Laravel的数据库话题,还有查询构造器和Eloquent模型,在之后的话题中会进行叙述,感兴趣的同学可以先查看官网文档。

大家下期见:)

---------------------------  我是可爱的分割线  ----------------------------

最后博主借地宣传一下,漳州编程小组招新了,这是一个面向漳州青少年信息学/软件设计的学习小组,有意向的同学点击链接,联系我吧。

Laravel入坑指南(4)——数据库(Mysql)的更多相关文章

  1. Phalcon如何切换数据库《Phalcon入坑指南系列 三》

    本系列目录 一.Phalcon在Windows上安装 <Phalcon入坑指南系列 一> 二.Phalcon入坑必须知道的功能(项目配置.控制器.模型.增.删.改.查) 三.Phalcon ...

  2. Phalcon多模块如何实现连接不同数据库 《Phalcon入坑指南系列 五》

    本系列目录 一.Phalcon在Windows上安装 <Phalcon入坑指南系列 一> 二.Phalcon入坑必须知道的功能<Phalcon入坑指南系列 二> 三.Phalc ...

  3. ElasticSearch入坑指南之概述及安装

    ---恢复内容开始--- ElasticSearch入坑指南之概述及安装 了解ElasticSearch ElasticSearch(简称ES)基于Lucene的分布式全文检索引擎.使用ES可以实现近 ...

  4. Phalcon如何创建多模块并能进行访问 《Phalcon入坑指南系列 四》

    本系列目录 一.Phalcon在Windows上安装 <Phalcon入坑指南系列 一> 二.Phalcon入坑必须知道的功能<Phalcon入坑指南系列 二> 三.Phalc ...

  5. electron入坑指南

    electron入坑指南 简介 electron 实际集成chrome浏览器和node环境, 运行你写的网页 app 基本目录结构 index.html 名称可以不是index, 这个文件与普通网页的 ...

  6. C语言入坑指南-被遗忘的初始化

    前言 什么是初始化?为什么要初始化?静态变量和局部变量的初始化又有什么区别?实际应用中应该怎么做?本文将一一回答这些问题. 什么是初始化 初始化指的是对数据对象或者变量赋予初始值.例如: int va ...

  7. Elasticsearch入坑指南之RESTful API

    Elasticsearch入坑指南之RESTful API Tags:Elasticsearch ES为开发者提供了非常丰富的基于Http协议的Rest API,通过简单的Rest请求,就可以实现非常 ...

  8. eclipse中导入外部包却无法查看对应源码或Javadoc的入坑指南

    eclipse中导入外部包却无法查看对应源码或Javadoc的 入坑指南 出现这个错误的原因是,你虽然导入了.jar包,但没有配置对应的Javadoc或源码路径,所以在编辑器中无法查看源 码和对应AP ...

  9. Rust入坑指南:核心概念

    如果说前面的坑我们一直在用小铲子挖的话,那么今天的坑就是用挖掘机挖的. 今天要介绍的是Rust的一个核心概念:Ownership.全文将分为什么是Ownership以及Ownership的传递类型两部 ...

  10. Rust入坑指南:鳞次栉比

    很久没有挖Rust的坑啦,今天来挖一些排列整齐的坑.没错,就是要介绍一些集合类型的数据类型."鳞次栉比"这个标题是不是显得很有文化? 在Rust入坑指南:常规套路一文中我们已经介绍 ...

随机推荐

  1. 百度网盘(百度云)SVIP超级会员共享账号每日更新(2023.11.25)

    来给大家伙送福利了! 一.百度网盘SVIP超级会员共享账号 可能很多人不懂这个共享账号是什么意思,小编在这里给大家做一下解答. 我们多知道百度网盘很大的用处就是类似U盘,不同的人把文件上传到百度网盘, ...

  2. Nginx IP地址较少时如何合理分配后端服务资源

    Nginx IP地址较少时如何合理分配后端服务资源 背景 客户系统很多时候会通过网闸或者是VPN登录到产品内 此时的IP地址一般是相同的. 这种情况下较难实现根据ip地址使用ip_hash的方式将压力 ...

  3. linux 内存盘的使用方式与验证

    linux 内存盘的使用方式与验证 背景 某些情况下, 硬盘的写入是一个很大的瓶颈 使用 内存文件系统的方式应该能够极大的提高IO的速度. 内存盘的优点是比较快, 缺点就是数据不是持久化的. 其实还是 ...

  4. [转帖]mysql8.0的RPM方式安装

    https://www.cnblogs.com/asker009/p/15072354.html 1. 下载 https://dev.mysql.com/downloads/ 使用wget下载yum的 ...

  5. [转帖]【P1】Jmeter 准备工作

    文章目录 一.Jmeter 介绍 1.1.Jmeter 有什么样功能 1.2.Jmeter 与 LoadRunner 比较 1.3.常用性能测试工具 1.4.性能测试工具如何选型 1.5.学习 Jme ...

  6. [转帖]LTP使用和分析

    一.安装及编译流程 1.下载LTP LTP 项目目前位于 GitHub,项目地址:https://github.com/linux-test-project/ltp . 获取最新版可以执行以下命令: ...

  7. Oracle 查询用户下表名,表列数,表行数,表大小的SQL

    最近想分析下数据库的信息, 然后写了这个SQL. 比较lowB一些. 因为Oracle的 deferred_segment_creation 参数的影响. 很多表如果是0行,那么是不会创建extent ...

  8. 简单进行Springboot Beans归属模块单元的统计分析方法

    简单进行Springboot Beans归属模块单元的统计分析方法 背景 基于Springboot的产品变的复杂之后 启动速度会越来越慢. 公司同事得出一个结论. beans 数量过多会导致启动速度逐 ...

  9. css中使用蒙层会带来哪些问题。

    css中使用蒙层会带来哪些问题. 1==> 如果蒙层设置的背景颜色或者透明度. 蒙层里面的子集元素将会受到影响: 此时子集元素可能不能注册点击的事件. 因为蒙层将它覆盖住了 2==> 此时 ...

  10. elementui出现展开后子菜单宽度多出1px问题

    添加 就可以解决了 .el-menu { border-right-width: 0; } <template> <div class="compen-left-men&q ...