`
烁烁Bo11
  • 浏览: 9995 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

数据库入门之运行原始 SQL 查找

阅读更多
数据库入门之运行原始 SQL 查找
一旦你设置好了数据库连接,就可以使用 DB facade 来进行查找。DB facade 提供每个类型的查找方法:select、update、insert、delete、statement。下面兄弟连帮你一一介绍。

运行一个 Select 查找#

在 DB facade 中使用 select 可以运行一个基本的查找:

<?php

namespace App\Http\Controllers;

use DB;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
    /**
     * 显示应用程序中所有用户的列表。
     *
     * @return Response
     */
    public function index()
    {
        $users = DB::select('select * from users where active = ?', [1]);

        return view('user.index', ['users' => $users]);
    }
}

传递给 select 方法的第一个参数是原始的 SQL 查找,而第二个参数是任何查找所需要的参数绑定。通常,这些都是 where 语句的限定值。参数绑定主要是为了防止 SQL 注入。

select 方法总会返回结果的数组数据。数组中的每个结果都是一个 PHP StdClass 对象,这使你能够访问到结果的值:

foreach ($users as $user) {
    echo $user->name;
}

使用命名绑定#

除了使用 ? 来表示你的参数绑定外,你也可以使用命名绑定运行查找:

$results = DB::select('select * from users where id = :id', ['id' => 1]);

运行 Insert#

若要运行 insert 语法,则可以在 DB facade 使用 insert 方法。如同 select 一样,这个方法的第一个参数是原始的 SQL 查找,第二个参数则是绑定:

DB::insert('insert into users (id, name) values (?, ?)', [1, 'Dayle']);

运行 Update#

update 方法用于更新已经存在于数据库的记录。该方法会返回此声明所影响的行数:

$affected = DB::update('update users set votes = 100 where name = ?', ['John']);

运行 Delete#

delete 方法用于删除已经存在于数据库的记录。如同 update 一样,删除的行数将会被返回:

$deleted = DB::delete('delete from users');

运行一般声明#

有时候一些数据库操作不应该返回任何参数。对于这种类型的操作,你可以在 DB facade 使用 statement 方法:

DB::statement('drop table users');

监听查找事件#

如果你希望能够监控到程序执行的每一条 SQL 语句,则可以使用 listen 方法。这个方法对于纪录查找跟调试将非常有用。你可以在 服务容器 中注册你的查找侦听器:

<?php

namespace App\Providers;

use DB;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * 启动任何应用程序的服务。
     *
     * @return void
     */
    public function boot()
    {
        DB::listen(function($sql, $bindings, $time) {
            //
        });
    }

    /**
     * 注册一个服务提供者。
     *
     * @return void
     */
    public function register()
    {
        //
    }
}
分享到:
评论

相关推荐

    T-SQL编程入门(SQL Server)

    ### T-SQL编程入门(SQL Server) #### 一、T-SQL的组成 T-SQL (Transact-SQL) 是 Microsoft SQL Server 使用的一种扩展版本的 SQL 语言,它提供了额外的功能来增强 SQL 的功能,使开发者能够更高效地管理和操作...

    Oracle开发人员SQL注入攻击入门

    《Oracle开发人员SQL注入攻击入门》 SQL注入是一种常见的网络安全攻击方式,主要针对使用SQL(结构化查询语言)的数据库系统,如Oracle。攻击者通过在应用的输入字段中插入恶意SQL代码,来欺骗服务器执行非预期的...

    SQL basic-初級入門實例

    【SQL基础知识——初级入门实例】 ...以上就是关于SQL基础的初级入门实例,包括查询优化、索引使用、视图创建、数据更新以及数据库表和关系的定义等知识点。学习这些内容有助于理解和应用SQL进行数据查询和管理。

    数据库讲义

    数据库讲义:数据库基础知识与应用入门 一、数据库基本概念 数据库是计算机科学的重要组成部分,主要涉及数据的组织、存储和检索。以下是对数据库基础知识的深入解析: ### 1. 什么是数据库? 数据库是一个用于...

    Navicat Premium操作手册.7z

    5SQL Server 分区函数146SQL Server 分区方案147SQL 预览147维护147维护MySQL147维护Oracle148维护PostgreSQL152维护SQLite153维护SQL Server153表查看器155网格查看155使用导览栏155编辑记录156排序、查找或替换...

    navicat开发手册

    Navicat是一款功能强大的数据库管理和开发工具,支持多种数据库系统,包括MySQL、MariaDB、Oracle、PostgreSQL、SQL Server和SQLite等。《Navicat开发手册》是一本为数据库开发人员编写的实用指南,它涵盖了使用...

    C#.net基础 VS2005入门教程.word版

    6. **数据库编程**:利用ADO.NET进行数据库操作,如连接数据库、执行SQL语句、数据绑定和数据集的使用。 7. **异常处理**:理解并实践C#中的try-catch-finally语句,以及如何自定义异常。 8. **编译和调试技巧**:...

    入门php个人相册实现(实验4 个人相册模块实现 )

    总的来说,这个实验涵盖了数据库设计、PHP文件操作、图像处理、数据库操作以及前端展示等多个环节,是一个全面的PHP入门项目。通过这个实践,你可以更好地理解PHP在Web开发中的应用,以及如何构建一个简单的个人相册...

    网管教程 从入门到精通软件篇.txt

    网管教程 从入门到精通软件篇 ★一。★详细的xp修复控制台命令和用法!!! 放入xp(2000)的光盘,安装时候选R,修复! Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的...

    生命的呼喊

    MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 而MyBatis Plus(MP)则是在MyBatis的基础上进行了增强,提供了更丰富的...

    MySQL5.7从入门到精通.pdf

    MySQL是世界上最受欢迎的开源关系型数据库管理系统之一,尤其在Web应用程序中被广泛使用。MySQL 5.7版本是其一个重要里程碑,引入了许多增强特性和优化,使得它在性能、安全性和可扩展性方面都有显著提升。以下是...

    vc++ 开发实例源码包

    系统硬件信息、存储设备管理、鼠标及键盘、声音和视频、图形和图像、网络、数据库) 《远程控制编程技术》源代码 内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例源码) 多个VC++...

    mybatis3.4.7中文离线文档

    MyBatis 可以使用简单的 XML 或注解进行配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。 在标题 "mybatis3.4.7中文离线文档" 中,我们关注的是 MyBatis ...

    Lucene介绍与入门使用 - 高压锅里的小白 - 博客园1

    结构化数据如数据库中的记录,具有固定格式和长度,可以使用SQL等查询语言轻松查询。而非结构化数据如文本文件、电子邮件等,没有固定格式,查询难度较大。 对于非结构化数据的查询,主要有两种方法: 1. **顺序...

    w3school 离线版(5.0)

    【标题】"w3school 离线版(5.0)" 是一个专门针对Web开发学习者的资源集合,它提供...这个离线版w3school不仅适合初学者入门,也对有经验的开发者有参考价值,因为其内容覆盖了Web开发的各个方面,而且易于查找和学习。

    mybatis3 API

    MyBatis 可以使用简单的 XML 或注解进行配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。 #### 二、入门指南 ##### 构建 SqlSessionFactory 从 XML ...

    力控快速指南

    - **7.2.2 创建关系数据库报表**:从关系数据库(如SQL Server)中获取数据生成报表。 #### 第8讲 与关系数据库的连接 **8.1 概述** 介绍了力控软件如何与关系数据库(如Oracle、SQL Server等)进行数据交换。 *...

    Kylin官方团队权威出版《Apache Kylin权威指南》

    Apache Kylin是一个开源的、分布式的分析型数据库,专为大数据环境设计,尤其在处理PB级数据时表现出色,为企业级大数据分析提供了高效、低延迟的SQL查询能力。这本书作为大数据入门的经典教程,不仅适合初学者,也...

Global site tag (gtag.js) - Google Analytics