参数绑定是指绑定一个参数到预处理的SQL语句中的对应命名占位符或问号占位符指定的变量,并且可以提高SQL处理的效率,需要数据库驱动类的支持,目前只有PDO和Sqlsrv驱动支持参数绑定功能。

富瑞华大理石平台厂家哪家好

手动绑定

参数手动绑定需要调用连贯操作的bind方法,例如:

  1. $Model = M('User');
  2. $where['name'] = ':name';
  3. $list = $Model->where($where)->bind(':name',I('name'))->select();

目前不支持?方式进行占位符,无论是PDO还是Sqlsrv驱动均统一使用 :var 方式进行占位符,驱动内部会自动进行处理。

参数绑定的参数可以是条件或者要data数据中的参数,CURD操作均可以支持参数绑定bind方法。

可以支持指定绑定变量的类型参数,例如:

  1. $Model = M('User');
  2. $where['id'] = ':id';
  3. $list = $Model->where($where)->bind(':id',I('id'),\PDO::PARAM_INT)->select();

也可以批量绑定,例如:

  1. $Model = M('User');
  2. $where['id'] = ':id';
  3. $where['name'] = ':name';
  4. $bind[':id'] = array(I('id'),\PDO::PARAM_INT);
  5. $bind[':name'] = array(I('name'),\PDO::PARAM_STR);
  6. $list = $Model->where($where)->bind($bind)->select();

自动绑定

对于某些操作的情况(例如模型的写入和更新方法),可以支持参数的自动绑定,例如: 首先需要开启DB_BIND_PARAM配置参数:

  1. 'DB_BIND_PARAM' => true

然后,我们在使用

  1. $Model = M('User');
  2. $Model->name = 'thinkphp';
  3. $Model->email = 'thinkphp@qq.com';
  4. $Model->add();

会自动对写入的数据进行参数绑定操作。其操作等效于:

  1. $Model = M('User');
  2. $Model->name = ':name';
  3. $Model->email = ':email';
  4. $bind[':name'] = 'thinkphp';
  5. $bind[':email'] = 'thinkphp@qq.com';
  6. $Model->bind($bind)->add();

自动绑定不支持参数类型等额外设置,如果有必要请使用上面的手动绑定方式。

 

thinkphp 参数绑定的更多相关文章

  1. ThinkPHP 参数绑定原理

    ThinkPHP里有一个参数绑定的功能 想自己试着写一个类似的 主要利用到PHP里的反射的API <?php class Index { public function edit($id=0) ...

  2. thinkphp模拟请求和参数绑定

    thinkphp模拟请求和参数绑定 一.总结 1.网页传过来的参数是可以修改的:get或者post等方式 传过来的参数是可以修改的  dump($request->get(['id'=>2 ...

  3. thinkphp action参数绑定

    参数绑定是通过直接绑定URL地址中的变量作为操作方法的参数,可以简化方法的定义甚至路由的解析. 参数绑定功能默认是开启的,其原理是把URL中的参数(不包括模块.控制器和操作名)和操作方法中的参数进行绑 ...

  4. ThinkPHP3.1新特性:Action参数绑定

    Action参数绑定功能提供了URL变量和操作方法的参数绑定支持,这一功能可以使得你的操作方法定义和参数获取更加清晰,也便于跨模块调用操作方法了.这一新特性对以往的操作方法使用没有任何影响,你也可以用 ...

  5. action参数绑定

    thinkPHP支持操作方法的参数绑定功能 action参数通过直接绑定URL中的变量作为操作方法的参数,可以简化方法的定义甚至路由的简析. 原理是把URL的中参数(不包括模块,控制器和操作名)和控制 ...

  6. tp5参数绑定

    关闭路由后的普通模式任然可以通过操作方法的参数绑定.控制器和空操作等特性实现url地址的简化 参数绑定(默认是按名称成对解析,): namespace app\index\Controller; cl ...

  7. 学习笔记4-Action参数绑定

    参数绑定功能默认是开启的,其原理是把URL中的参数(不包括模块.控制器和操作名)和操作方法中的参数进行绑定. 要启用参数绑定功能,首先确保你开启了URL_PARAMS_BIND设置: 'URL_PAR ...

  8. Spring MVC初始化参数绑定

    初始化参数绑定与类型转换很类似,初始化绑定时,主要是参数类型 ---单日期 在处理器类中配置绑定方法  使用@InitBinder注解 在这里首先注册一个用户编辑器 参数一为目标类型   proper ...

  9. SpringMVC初始化参数绑定--日期格式

    一.初始化参数绑定[一种日期格式] 配置步骤: ①:在applicationcontext.xml中只需要配置一个包扫描器即可 <!-- 包扫描器 --> <context:comp ...

随机推荐

  1. C++的new和delete

    #include <iostream> using namespace std; int main(int argc, char *argv[]) { int *p = NULL; //定 ...

  2. Ubuntu 18.04.2 aliases 设置永久生效解决方案

    设置 临时 alias alias ll="ls -al" 缺点是下次登录时就不生效了 永久生效解决方案 进入到 etc 文件夹下 cd /etc/ 创建 bash_aliases ...

  3. hexo next主题深度优化(八),微加速

    个人博客:https://mmmmmm.me 源码:https://github.com/dataiyangu/dataiyangu.github.io 通过不断地上网查资料,引用的js.css.图片 ...

  4. [kuangbin带你飞]专题一 简单搜索 - M - 非常可乐

    #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #i ...

  5. C++之数据类型--整形&sizeof关键字

    数据类型: C++规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存 整型 **作用**:整型变量表示的是==整数类型==的数据 C++中能够表示整型的类型有以下几种方式 ...

  6. Restoring Road Network Floyd

    问题 C: Restoring Road Network 时间限制: 1 Sec  内存限制: 128 MB提交: 731  解决: 149[提交] [状态] [讨论版] [命题人:admin] 题目 ...

  7. Fedora25安装mariadb并设置权限

    MariaDB版本10.1.21 Fedora版本25 1.Change root user sudo -i 2. dnf install -y mysql dnf install -y mariad ...

  8. idea在ssm项目中引入本地的jar

    在对应的lib下,右键找到add...,即可

  9. Winform打包工具SetupFactory 9 的使用 (转)

    写了个WinForm的小程序..以前没打过包..只是直接把Bin里的东西复制出来使用..自己使用是足够.但是发给别人毕竟不太好看(不牛逼)..所以就想着打包.. Vs2012自带的有打包的功能..相信 ...

  10. centos7使用iptables作为防火墙方法

    centos7使用iptables作为防火墙方法查看firewalld状态: systemctl status firewalld将centos7默认的firewalld停止,并将iptables作为 ...