PHP简单实现防止SQL注入的方法,结合实例形式分析了PHP防止SQL注入的常用操作技巧与注意事项,PHP源码备有详尽注释便于理解,需要的朋友可以参考下!

方法一:execute代入参数

 $var_Value) {
//获取POST数组最大值
$num = $num + 1;
}
//下标为i的数组存储的是商品id, 下标为j数组的存储的是此商品的库存
for($i=0;$isetAttribute(PDO::ATTR_EMULATE_PREPARES, false);
//查询数据库中是否存在该ID的商品
//当调用 prepare() 时,查询语句已经发送给了数据库服务器,此时只有占位符 ? 发送过去,没有用户提交的数据
$stmt = $pdo->prepare("select good_id from delphi_test_content WHERE good_id = ?");
//当调用到 execute()时,用户提交过来的值才会传送给数据库,他们是分开传送的,两者独立的,SQL攻击者没有一点机会。
$stmt->execute(array($_POST[$i]));
//返回查询结果
$count = $stmt->rowCount();
//如果本地数据库存在该商品ID和库存记录,就更新该商品的库存
if($count != 0)
{
$stmt = $pdo->prepare("update delphi_test_content set content = ? WHERE good_id = ?");
$stmt->execute(array($_POST[$j], $_POST[$i]));
}
//如果本地数据库没有该商品ID和库存记录,就新增该条记录
if($count == 0)
{
$stmt = $pdo->prepare("insert into delphi_test_content (good_id,content) values (?,?)");
$stmt->execute(array($_POST[$i], $_POST[$j]));
}
}
}
$pdo = null;
//关闭连接
}
?>

方法二:bindParam绑定参数

 $var_Value) {
//获取POST数组最大值
$num = $num + 1;
}
//下标为i的数组存储的是商品id, 下标为j数组的存储的是此商品的库存
for($i=0;$iprepare("select good_id from delphi_test_content WHERE good_id = ?");
$stmt->execute(array($_POST[$i]));
$stmt->bindParam(1,$_POST[$i]);
$stmt->execute();
//返回查询结果
$count = $stmt->rowCount();
//如果本地数据库存在该商品ID和库存记录,就更新该商品的库存
if($count != 0)
{
$stmt = $pdo->prepare("update delphi_test_content set content = ? WHERE good_id = ?");
$stmt->execute(array($_POST[$j], $_POST[$i]));
$stmt->bindParam(1,$_POST[$j]);
$stmt->bindParam(2,$_POST[$i]);
$stmt->execute();
}
//如果本地数据库没有该商品ID和库存记录,就新增该条记录
if($count == 0)
{
$stmt = $pdo->prepare("insert into delphi_test_content (good_id,content) values (?,?)");
$stmt->bindParam(1,$_POST[$i]);
$stmt->bindParam(2,$_POST[$j]);
$stmt->execute();
}
}
}
$pdo = null;
//关闭连接
}
?>

PHP实现防止SQL注入的2种方法的更多相关文章

  1. 网站mysql防止sql注入攻击 3种方法总结

    mysql数据库一直以来都遭受到sql注入攻击的影响,很多网站,包括目前的PC端以及手机端都在使用php+mysql数据库这种架构,大多数网站受到的攻击都是与sql注入攻击有关,那么mysql数据库如 ...

  2. 防止 jsp被sql注入的五种方法

    一.SQL注入简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库. 二.SQL注入攻击的总体 ...

  3. 防止sql注入的几种方法

    一.SQL注入简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库. 二.SQL注入攻击的总体 ...

  4. 预处理(防止sql注入的一种方式)

    <!--- 预处理(预编译) ---><?php/* 防止 sql 注入的两种方式: 1. 人为提高代码的逻辑性,使其变得更严谨,滴水不漏. 比如说 增加判断条件,增加输入过滤等,但 ...

  5. Hibernate使用中防止SQL注入的几种方案

    Hibernate使用中防止SQL注入的几种方案 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数 ...

  6. 【原创】内核ShellCode注入的一种方法

    标 题: [原创]内核ShellCode注入的一种方法 作 者: organic 时 间: 2013-05-04,04:34:08 链 接: http://bbs.pediy.com/showthre ...

  7. MySQL命令执行sql文件的两种方法

    MySQL命令执行sql文件的两种方法 摘要:和其他数据库一样,MySQL也提供了命令执行sql脚本文件,方便地进行数据库.表以及数据等各种操作.下面笔者讲解MySQL执行sql文件命令的两种方法,希 ...

  8. PL/SQL Developer执行.sql文件的几种方法

    1.复制SQL 第一种方法非常常见,也非常简单,先用文本编辑器打开.sql文件,然后把sql复制到PL/SQL Developer的SQL窗口或者命令窗口中运行就行了,本来我也是这么做的,但是我将SQ ...

  9. SQL注入的几种类型

    SQL注入就是: 将构造SQL语句来插入到web提交的数据之中,让其返回数据时运行自己构造的恶意SQL语句. SQL注入构造恶意SQL语句的方法有: 构造堆叠,构造闭合,构造报错,构造时间差,等等 S ...

随机推荐

  1. Mysql主外键

    主键  primary   key 创建表时直接加上主键: create table student1(id int primary key, name varchar(20), age int, g ...

  2. 旋转数组的最小数字(JAVA)

    旋转数组的最小数字 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2 ...

  3. Junit单元测试随笔

    Junit单元测试随笔 Mooctest 使用心得: Mooctest IDE非常适合新手使用,相比于Eclipse,他免去了配置环境的麻烦.eclipse中 Junit 编写代码经验总结 刚开始写测 ...

  4. servlet_3

    ServletContext 介绍 提供的功能 servlet中获取servletcontext实例 servletcontext接口的方法 package com.fgy; import java. ...

  5. Day 17 常用模块

    一.时间模块:time 1.时间戳:time.time() # 可以作为数据的唯一标识 print(time.time) # 1554878849.8452318 2.延迟线程的运行:time.sle ...

  6. Window服务项目脚手架

    本人最近工作用到window服务程序,于是尝试分享下经验,开源了一个window服务脚手架项目,把window服务程序必不可少的组件集成进去,如日志组件log4net,window服务挂在后台,用日志 ...

  7. vs单独调试dll

    用生成好的exe单独调试dll,右键项目属性->调试->命令->选择exe

  8. bsdiff差分算法

    bsdiff的基本原理 bsdiff是由Conlin Percival开源的一个优秀的差分算法,而且是跨平台的.在Android系统中所使用的imgdiff本质上就是bsdiff. bsdiff的依据 ...

  9. C语言之二维数组与指针

    二维数组: ][]; 二维数组实质上也就是一维数组,a[2][3]可看做一个2个元素的一维数组,这2个元素又是另一个数组,在内存中,它的排布如下: #include "stdio.h&quo ...

  10. 利用redis List队列简单实现秒杀 PHP代码实现

    一 生产者producer部分 --------------------------------producer 部分注释--------------------------------------- ...