87)PHP,PDO的预编译技术

(1)

      

  比如以下的语句:

1 insert into  biao1 values(‘李宁’,‘100’);
2 insert into  biao1 values(‘安踏’,‘100’);
3 insert into  biao1 values(‘匹克’,‘100’);
4 insert into  biao1 values(‘乔丹’,‘100’);
5 insert into  biao1 values(‘耐克’,‘100’);
6 insert into  biao1 values(‘阿迪’,‘100’);
7 insert into  biao1 values(‘361’,‘100’);

那么,这个PDO就可以只是编译一次这些语句相同的地方,然后,根据区别来执行不同的语句。

1 或者比如
2 insert into team values(NULL,‘国安’);
3 insert into team values(NULL,‘恒大’);
4 insert into team values(NULL,‘建国’);
5 insert into team values(NULL,‘绿地’);

语法的实现:

    

1 (1)编译统一的结构,
2 (2)绑定数据到中间编译结果上,
3 (3)执行绑定了数据的语句
1 (1)编译统一的结构,
2             $PDOStatement = $pdo->prepare(SQL的结构);
3             SQL结构中的数据部分,可以使用问好,或者冒号标签的语法来占用:

1 (2)绑定数据到中间编译结果上,
2              $PDOStatement->bindValue()

1 (3)执行绑定了数据的语句
2               $PDOStatement->execute();

 预编译的优点:

      更好的防止SQL注入,是因为预编译时,不需要用户的数据参与。编译时,结构固定,导致用户数据不能影响到SQL的结构

普通的执行方法:

      $pdo->query();

      $pdo->exec()

如果需要防止SQL注入,需要人为的转义用户数据,使用的方式是$pdo->quote()方法。转义并使用引号包裹。

    

时间: 2024-12-18 12:04:56

87)PHP,PDO的预编译技术的相关文章

php 预编译 解析

其中 执行两次 往数据库插入两次. $pdostat->execute();$pdostat->execute(); $pdo =new PDO($dsn, $username, $passwd); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);    echo "连接成功";}catch(PDOException $e){    echo "连接失败".$e->g

一张图掌握移动Web前端所有技术(大前端、工程化、预编译、自动化)

你要的移动web前端都在这里! 大前端方向:移动Web前端.Native客户端.Node.js. 大前端框架:React.Vue.js.Koa 跨终端技术:HTML 5.CSS 3.JavaScript 跨平台框架:React Native.Cordova 前端工程化:Grunt.Gulp.Webpack 前端预编译:Babel.Sass.Less 自动化测试:Jasmine.Mocha.Karma 一图在手,应有尽有! 更多信息参考:https://item.jd.com/12170351.h

mysql预编译处理(mysqli、PDO)

DML语句预编译: MysqLi: <?php $mysqli = new mysqli("localhost","root","root","dbname"); $mysqli->query("set names utf8"); $sql = 'insert into user(id,name,age,email) values (?,?,?,?)'; $mysqli_stmt = $mysq

PDO预编译语句执行查询与DML操作

代码示例: MyPDO.class.php的代码如下: /** * 使用PDO预编译语句执行DML操作并返回受影响的行数 * @param $sql 需要执行的SQL语句(预编译语句写法) * @param array $arr 预编译语句需要添加的数据值,数组结构 * @return int 返回DML执行后受影响的行数 */public function intByPdoPrepare($sql, array $arr=array()){ $ps =$this->pdo->prepare(

PHP预编译处理技术简介

1.提高数据库的效率:减少编译次数,减少连接次数.当出现当量操作sql语句,比如大量将数据插入数据库中,原来的那种单个执行sql语句或者批量执行sql语句的做法,显然是不可行的,因为无论是单个执行还是批量执行都会连续的发送sql语句向数据库中,数据库接到sql语句对它进行编译处理,从而导致效率底下.而php中出现的预编译解决了这个问题,他的工作原理是:将sql语句发过去,数据库对这一个sql语句进行预编译处理.之后你只需要将要数据发送到数据库即可. 2.下面就我在学习中的一个实例以作为说明: <

使用预编译头提高编译速度

什么是预编译头 在介绍预编译头之前,有必要了解一下C/C++的编译方式.C/C++的编译单元是源文件(带有.c..cc..cpp等扩展名的文件),在编译一个源文件之前,预处理器会把这个源文件中所有通过#include指令包含进来的头文件递归地展开,也就是把所有直接或间接包含的头文件原封不动地插入进来.当这个过程结束之后,才开始编译. 这种编译方式的缺点是会使头文件被重复编译.假如有一百个源文件都包含了Windows.h,那么这个头文件会在一百个源文件中展开,它里面的代码会被重复编译了一百次,尽管

hello world的本质-----预编译,编译,汇编,链接

今天开始会开始讲述linux下程序的本质.这关系着一个程序员内功的修养以及后续读android源代码的基础. 大家都知道一个程序从编写完成到最后运行成功.要经历4个步骤,一共是预处理,编译,汇编,和链接. 首先我们编写一个最简单的hello world 程序. 1 #include<stdio.h> 2 int main() 3 { 4 printf("hello world!\n"); 5 return 0; 6 7 } 然后 在命令行输入命令 gcc -E hello.

C++预编译头文件:stdafx.h

其实在我们的生活中,很多东西都是这样,出现一次两次,而往往被我们忽略.碰见多次,终有一天被我们注意到,然后想弄个明白.又或许是注意到了,然而也并没有要去弄个明白的心.终有一天它给你困惑,而不得不去弄明白.不管stdafx.h你有没有注意到,不管stdafx.h有没有给你困惑,现在我们就来了解一下预编译头. 什么是预编译头 预编译头(precompiled header)是程序设计时把头文件编译为中间格式,以节约在开发过程中编译器反复编译该头文件的开销.——来自<维基百科> 可见预编译头的意义就

iOS中的预编译指令的初步探究

看到非常好的两篇技术文,转来方便自己查看. 转自:http://www.cnblogs.com/daiweilai/p/4234336.html 开篇 我们人类创造东西的时候有个词叫做”仿生学“!人类创造什么东西都会模仿自己来创造,所以上帝没有长成树的样子而和人长得一样,科幻片里面外星人也像人一样有眼睛有鼻子……但是人类自己创造的东西如果太像自己,自己又会吓尿(恐怖谷效应),人类真是奇葩:奇葩的我们在20世纪创造了改变世界的东西——计算机(电脑),不用怀疑,这货当然也是仿生学!这货哪里长得像人了