php -- PDO预处理
可以使用多种方式实现预处理:指的是在绑定数据进行执行的时候,可以有多种方式。
预处理语句中为变量
使用数组指定预处理变量
1、准备预处理语句(发送给服务器,让服务器准备预处理语句)
PDOStatement PDO::prepare:类似exec将一条SQL语句发送给Mysql服务器
//PDO::prepare 能够自动的准备一个预处理语句,用户需要准备的只是预处理所要执行的语句
//需求:往学生表里循环插入10条记录
//PDO的预处理能够自动的将对应的以:开始的变量给记录下来,实际发送给服务器的是“?”
$sql1 = "insert into pro_student values(null,:s_name,:s_num,:s_gender,:s_age,:c_id)";
2、发送预处理语句
$stmt = $pdo->prepare($sql1);
3、给预处理绑定数据
$arr = array(
':s_name' => '房祖名',
':s_num' => 'itcast0013',
':s_gender' => 0,
':s_age' => 28,
':c_id' => 2
);
4、执行预处理:将要操作的数据发送给预处理语句,再执行预处理语句
PDOStatement::execute([$array]):数组用来传递对应的参数
$stmt->execute($arr); //执行预处理
通过绑定变量
bindParam
bool PDOStatement::bindParam ( mixed $parameter
, mixed &$variable
[, int $data_type
= PDO::PARAM_STR [, int $length
[, mixed $driver_options
]]] )
在执行预处理之前,将之前预处理语句所指定的变量进行赋值
只能通过变量的形式进行赋值(引用传值)
bindValue
bool PDOStatement::bindValue ( mixed $parameter
, mixed $value
[, int $data_type
= PDO::PARAM_STR ] )
执行与bindParam一样
在执行预处理之前,将之前预处理语句所指定的变量进行赋值,或者直接将值作为参数进行绑定
$stmt->bindValue(':s_name','张三');
$stmt->bindValue(':s_num','itcast0015');
$stmt->bindValue(':s_gender',0);
$stmt->bindValue(':s_age',30);
$stmt->bindValue(':c_id',3);
bindParam与bindValue的区别
1、bindParam必须要先声明变量,再使用变量;bindValue可以直接使用值
2、bindValue是一次性的(因为是值传递,若变量值改变了,则需要重新绑定bindValue),而bindParam可以无限使用(因为使用的引用传值,一旦变量的值进行改变,那么对应的组织SQL语句时所用到的变量的值也跟着改变)
预处理语句中为?
使用数组指定预处理变量
通过绑定变量
此时,bindParam和bindValue绑定的时候,第一个参数都为数字,数字对应第几个“?”
php -- PDO预处理的更多相关文章
- MySQL pdo预处理能防止sql注入的原因
MySQL pdo预处理能防止sql注入的原因: 1.先看预处理的语法 $pdo->prepare('select * from biao1 where id=:id'); $pdo->e ...
- pdo 预处理
<?php /* * pdo 预处理sql */ $dsn = "mysql:dbname=0328;host=localhost"; $username = " ...
- 2017-07-25 PDO预处理以及防止sql注入
首先来看下不做任何处理的php登录,首先是HTML页面代码 <html> <head><title>用户登录</title></head> ...
- 前端学PHP之PDO预处理语句
× 目录 [1]定义 [2]准备语句 [3]绑定参数[4]执行查询[5]获取数据[6]大数据对象 前面的话 本来要把预处理语句和前面的基础操作写成一篇的.但是,由于博客园的限制,可能是因为长度超出,保 ...
- PDO预处理
方法:bool PDOStatement::execute ([ array $input_parameters ] ) 1.PDOStatement::execute不使用参数 01)单个绑定值(P ...
- php pdo预处理语句与存储过程
很多更成熟的数据库都支持预处理语句的概念.什么是预处理语句?可以把它看作是想要运行的 SQL 的一种编译过的模板,它可以使用变量参数进行定制.预处理语句可以带来两大好处: 1.查询仅需解析(或预处理) ...
- PHP基础知识之————PDO预处理语句
转载处:http://www.cnblogs.com/xiaohuochai/p/6133353.html 定义 在生成网页时,许多PHP脚本通常都会执行除参数之外,其他部分完全相同的查询语句,针对这 ...
- PDO预处理语句规避SQL注入攻击
所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令.在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存 ...
- PDO预处理语句
1.造PDO对象$dsn = "mysql:dbname=mydb;host=localhost";$pdo = new PDO($dsn,"root",&qu ...
- PHP PDO 预处理语句与存储过程
很多更成熟的数据库都支持预处理语句的概念. 什么是预处理语句?可以把它看作是想要运行的 SQL 的一种编译过的模板,它可以使用变量参数进行定制.预处理语句可以带来两大好处: 查询仅需解析(或预处理)一 ...
随机推荐
- 七彩花都手机客户部分测试源码Phonegap+html5
个人建设广州花都论坛,七彩花都(http://www.w30.cn)包含传值回复楼层的jsonp 可以加入我们的QQ群讨论 专注phonepap 核心加载 jsonp返回格式为 jsonp([{&qu ...
- 用mapreduce来操作hbase的优化
(1)scan.setCacheBlocks(false); 初始化map任务 TableMapReduceUtil.initTableMapperJob 本次mr任务scan的所有数据不放在缓 ...
- JDBC-DAO经典模式 实现对数据库的增、删、改、查
JDBC(Java Data Base Connection)的作用是连接数据库 先看下jdbc连接SQLServer数据库的简单例子 代码实现(FirstJDBC): package com.jdb ...
- webpack 编译模板文件
1.项目结构 安装loader: npm i html-loader --save-dev npm i ejs-loader --save-dev 2.模板文件layer.tpl <div cl ...
- CSS命名规范 BEM
良好的代码结构,HTML和css元素之间的关系,对于项目交付是很重要的! BEM解释: (1).block 是BEM的区块(B),包含内容和风格.如bootstrap框架的.container. (2 ...
- Java中try catch finally的执行顺序问题
finally 语句块是在 try 或者 catch 中的 return 语句之前执行的.更加一般的说法是,finally 语句块应该是在控制转移语句之前执行,控制转移语句除了 return 外,还有 ...
- Java反射机制及Method.invoke详解
JAVA反射机制 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法:这种动态获取的信息以及动态调用对象的方法的功能称为ja ...
- LINUX下动态链接库的使用-dlopen dlsym dlclose dlerror
本定义 功能:打开一个动态链接库 包含头文件: #include <dlfcn.h> 函数定义: void * dlopen( const char * pathname, int mod ...
- Android开发之帐户管理
android.accounts主要包括了集中式的帐户管理API, AccountManagerCallback, AccountManagerFuture, OnAccountsUpdateList ...
- 摘: VS2010 C++ 调用 DLL (C++编写)
一.为什么需要dll 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用. 比较常见的例子是各种应用程序框架,如ATL. ...