参数化查询解释在这里:Wiki参数化查询 (少有的Wiki中文比英文介绍的要详细的编程条目)

PDO中参数化查询主要用到prepare()方法,然后这个方法会返回一个PDOStatement对象,也就SQL声明(不知道怎么翻译),此时SQL语句只是被编译,但并未执行,调用PDOStatement中方法后会执行SQL语句,如下示例:

$sm = $db->prepare('SELECT login_oid FROM logined WHERE user_id=:user_id;');

$sm->bindValue(':user_id', $user_id, PDO::PARAM_INT);

$sm -> execute();

在execute()执行前,就可以调用bindValue()或者bindParam()方法替换之前准备的SQL语句中的你指定参数了,在SQL语句中指定参数有两种方式:':name'和'?',上面代码中的用的是前一种,后一种的方式是:

$sm = $db->prepare('SELECT * FROM fruit WHERE calories < ?;');

$sm->bindValue(1, $calories, PDO::PARAM_INT);

$sm->execute();

bindValue()有三个参数,第一个指定要替换掉SQL语句中哪一个参数,第二个指定替换后的值,第三个指定值的类型,类型对应如下:

PDO::PARAM_BOOL

布尔类型

PDO::PARAM_NULL

NULL类型

PDO::PARAM_INT

整数类型

PDO::PARAM_STR

字符串类型如 CHAR, VARCHAR, string

PDO::PARAM_LOB

资源类大对象,如文件等

PDO::PARAM_STMT

不知道

PDO::PARAM_INPUT_OUTPUT

这个好像是扩展类型

里面没有提供实数类型,这个很诧异

再说说execute()这个方法,它本身也可以做参数替换,但是它会把所有值的类型都变成字符串类型,如下

$sm = $db->prepare('SELECT * FROM fruit WHERE calories < ?;');

$sm->execute(array($calories));

多参数替换如下

$sm = $db->prepare('SELECT * FROM fruit WHERE calories < ?, id < ?;');

$sm->execute(array($calories, $user_id));

pdo 参数化查询 mysql函数_PDO笔记之参数化查询相关推荐

  1. 珍藏多年的MySQL函数大全笔记,掌握数据库真不难

    做程序员的谁会离得开数据库呢?今天就来分享一下我整理的MySQL的常用函数,基本上囊括了平时要用的函数,它们已经陪我走过了不少年头了,风里来雨里去,缝缝补补又几年,希望能帮到你们! 如果数据库函数你能 ...

  2. mysql 变量作表名查询_使用MySQL函数变量作为表名查询

    我需要有一个表中增加一定的ID(如AUTO_INCREMENT)函数使用MySQL函数变量作为表名查询 我有水木清华这样 DELIMITER $$ DROP FUNCTION IF EXISTS `G ...

  3. php查询mysql数据库乱码_PHP怎样处理查询MySQL数据库中文乱码?_后端开发

    PHP如何处理查询MySQL数据库中文乱码? 1.将MySQL数据库默许的编码是UTF-8: 2.在MySQL中建立表时,将字符集设置为UTF-8: 3.在PHP中查询数据之前,将数据库编码设置为UT ...

  4. mysql分组和where条件查询,mysql中where和having条件查询的区别

    having一般跟在group by后面,先对查询结果分组,再根据having条件,筛选满足条件的组,限制字段最好选择分组的字段,可以操纵使用聚合函数(sum().count().avg()等)的列, ...

  5. php查询mysql表里的数据_3.php查询mysql数据表所有记录

    // 第一步:连接 mysql 服务器. $con = mysql_connect("localhost","root","start_2011&qu ...

  6. 查询mysql 中的空文本_MySQL查询以显示空列的自定义文本

    让我们首先创建一个表-mysql> create table DemoTable -> ( -> FirstName varchar(20) -> ); 使用插入命令在表中插入 ...

  7. 查询mysql中user表_怎么查询mysql user表?

    在mysql中,可以使用"SELECT * FROM mysql.user;"语句来查询user表,且必须拥有对user表的查询权限才可执行该语句.新创建的用户只有登录MySQL服 ...

  8. 查询mysql存储数据大小_MySQL如何查询数据占用存储空间的大小?

    最简单的方式,直接查看全局的,如下所示: mysql> use information_schema; Reading table information for completion of t ...

  9. ava查询mysql的数据_MYSQLi数据访问查询数据

    单条件查询 数据查询 请输入汽车品牌: 汽车代号 汽车名字 系列代号 汽车油耗 汽车价格 $tj = " 1=1 ";//恒成立条件 $name = ""; i ...

最新文章

  1. 解决nginx重启“var/run/nginx/nginx.pid no such file or directory问题
  2. HDU 5821 Ball
  3. TCP/IP学习笔记(七)四次挥手
  4. 使用PM2搭建在线vue.js开发环境(以守护进程方式热启动)
  5. java getabsolutepath,详谈java中File类getPath()、getAbsolutePath()、getCanonical的区别
  6. ASP.NET Core 中断请求了解一下(翻译)
  7. kata_小规模流处理kata。 第1部分:线程池
  8. vb6.0企业版win7_比win7更快?官方精简win10:3G+不更新,旧电脑福音
  9. requests 证书验证
  10. Hadoop 集群搭建补充
  11. python为运行为何出现乱码_python中文的显示乱码怎么办
  12. 物业管理系统(C++/详细源码/思路流程图)
  13. 电容式 触摸按键 原理
  14. excel填充序列_分分钟搞定10万个序号自动填充,拒绝加班,你还在手动输入吗?...
  15. 《灵飞经》①洪武天下 第三章 东岛三尊
  16. html网站title、description和keywords、
  17. 【人工智能】德国人工智能技术发展现状和未来趋势
  18. Gstore官网学习二:安装(笔者自带填坑)
  19. Xilinx SDK 中 的 'No rule to make target ' / '没有规则可以创建...'
  20. 【数学建模】模糊数学运算——python实现各类运算

热门文章

  1. php_sapi常量,PHP常量PHP_SAPI与函数php_sapi_name()简介,PHP运行环境检测
  2. php导入csv文件,php实现CSV文件导入和导出
  3. composer查看当前镜像取消_国内全量镜像大全
  4. stm32f407能跑linux吗_跑步能跑进医院?那我该做跑步运动吗?想健康一点太难了...
  5. wordpress房产信息网_Realia v3.1.2 wordpress房地产模板 租房网站模板
  6. ajax跨域请求(cors实现),ajax跨域请求(CORS实现)
  7. java 文件缓冲区_Java开发笔记(八十六)通过缓冲区读写文件
  8. Angular使用总结 --- 如何正确的操作DOM
  9. [Python][小知识][NO.3] Python 使用系统默认浏览器打开指定URL的网址
  10. jquery.cookie.js 使用方法