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. Privoxy代理的使用

    目录 1. Privoxy介绍 1.1 安装 1.2 配置 1.3 使用 1.4 其他配置 1.5 测试链接及查看配置 2. 相关信息 https://www.privoxy.org/ http:// ...

  2. redhat6.5 redis单节点多实例3A集群搭建

    在进行搭建redis3M 集群之前,首先要明白如何在单节点上完成redis的搭建. 单节点单实例搭建可以参看这个网:https://www.cnblogs.com/butterflies/p/9628 ...

  3. TLS1.2 only

    客户有个特殊需求,只能使用TLS1.2,其余的都不行. google了一下,发现要Enable/Disable TLS倒也不难 Windows Registry Editor Version 5.00 ...

  4. time模块的用法和转化关系

    Time模块的用法和互相转化关系 UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间.在中国为UTC+8.DST(Daylight Savin ...

  5. Ubuntu 16.10的root默认密码设置

    1.终端输入sudo passwd 2.输入当前用户密码,回车 3.按照终端提示输入新的root密码并确认 4.su root 输入新的密码 5.修改root密码成功

  6. 《Attention Augmented Convolutional Networks》注意力的神经网络

    paper: <Attention Augmented Convolutional Networks> https://arxiv.org/pdf/1904.09925.pdf 这篇文章是 ...

  7. 一键部署office的工具——OTool

    OTool可用于office的下载.安装和激活,其激活方式是调用kmspico服务器进行的,官方网站是https://otp.landian.vip/zh-cn/,最新版本5.9.3.6在2019/4 ...

  8. Java ConcurrentHashMap存入引用对象时也是线程安全的

    本人小白,看到资料说ConcurrentHashMap是线程安全的,get过程不需要加锁,put是线程安全的,推荐高并发时使用.但是本人不清楚是否该map中存入的引用类型对象,对象属性变化也是否线程安 ...

  9. 使用Let's Encrypt搭建永久免费的HTTPS服务

    1.概述1.1 HTTPS概述HTTPS即HTTP + TLS,TLS 是传输层加密协议,它的前身是 SSL 协议.我们知道HTTP协议是基于TCP的.简而言之HTTPS就是在TCP的基础上套一层TL ...

  10. RN 的页面布局

    从 https://blog.csdn.net/liangzelei/article/details/53965417转载 React Native布局详细指南  https://www.jiansh ...