zoukankan      html  css  js  c++  java
  • Laravel入坑指南(4)——数据库(Mysql)

    来来来,新的一节出炉了。这一节大家一起了解,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 IlluminateSupportFacadesDB;
    
    $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模型,在之后的话题中会进行叙述,感兴趣的同学可以先查看官网文档。

    大家下期见:)

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

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

  • 相关阅读:
    新概念第二册(1)--英语口语听力课1
    外企面试课程(一)---熟悉常见的缩略词
    公司 邮件 翻译 培训 长难句 结课
    workflow
    公司 邮件 翻译 培训 长难句 20
    公司 邮件 翻译 培训 长难句 19
    Engineering Management
    公司 邮件 翻译 培训 长难句 18
    公司 邮件 翻译 培训 长难句 17
    第14.5节 利用浏览器获取的http信息构造Python网页访问的http请求头
  • 原文地址:https://www.cnblogs.com/ddcoder/p/13303990.html
Copyright © 2011-2022 走看看