Mysql 预查询处理 事务机制
预处理
PDO支持sql预处理功能,可以有效的防止sql注入的问题
例如:
以下操作会导致数据表中所有数据删除
$host = 'localhost';
$port = 3306;
$dbname = 'pdo';
$user = 'root';
$pass = '123';
$dsn = "mysql:host={$host};port={$port};dbname={$dbname}";
try {
$mysql = new PDO($dsn,$user,$pass);
} catch (Exception $e) {
echo 'connect failure !';
die();
} $id = '1 or 1=1'; //ID模拟从前端获取的删除数据的ID
$sql = "DELETE FROM `books` WHERE id={$id}";
$mysql->exec($sql);
这是常见的一种sql注入的方式
采用pdo提供的预处理的方法,可以避免这一点
$id = '1 or 1=1'; //ID模拟从前端获取的删除数据的ID
$sql = "DELETE FROM `books` WHERE id = :id"; //使用占位符代替用户输入的id
$sth = $mysql->prepare($sql); //绑定参数
$sth->execute(array('id'=>$id));
语法:
$mysql->prepare($sql); //生成预处理语句 返回PDOStatement对象
$sth->execute(array(参数)) //执行预处理语句 返回布尔值
查询
$sql = 'SELECT * FROM `books` WHERE id < 100';
$res = $mysql->query($sql); //执行查询 返回PDOStatement对象
$all = $res->fetchAll(); //返回结果集中所有的行
$row = $res->fetch(); //返回结果集中下一行,同时指针向前移动一位
foreach ($all as $key => $value) {
var_dump($value);
}
扩展:TP中预查询
$resultSet = Db::query('insert into user values(:name,:age,:sex)', ['张三','10','1']);
事务机制
$mysql->beginTransaction(); //开启事务机制
$sql = "UPDATE `books` SET name='mysql and PHP...' WHERE id < 100 ";
$mysql->exec($sql);
//根据业务执行以下语句
$mysql->rollBack(); //回滚
$mysql->commit(); //提交
Mysql 预查询处理 事务机制的更多相关文章
- php+mysql预查询prepare 与普通查询的性能对比
prepare可以解决大访问量的网站给数据库服务器所带来的负载和开销,本文章通过实例向大家介绍预查询prepare与普通查询的性能对比,需要的朋友可以参考一下. 实例代码如下: <?php cl ...
- MySQL高级查询 & 事务机制
1.基础查询where 高级条件查询Where子句 SELECT empno,ename,sal,hiredate FROM t_tmp WHERE deptno=10 AND (sal+IFNULL ...
- MySQL 事务机制
事务处理是保证数据安全的重要机制,事务有四个重要属性 ,根据它们的英文名称可以记为ACID: 原子性(Atomic): 事务操作是不可分割的; 事务只存在已执行和未执行两种状态,不存在只执行了部分指令 ...
- MySQL的ALTER变更、正则查询、分组查询、排序查询以及事务查询的概
MySQL的表和字段信息的变更 ALTER TABLE table-name DROP column-name; #删除某个字段 ALTER TABLE table-name ADD column-n ...
- MySQL的事务机制和锁(InnoDB引擎、MVCC多版本并发控制技术)
一.事务(数据库的事务都通用的定义) 1.1 事务定义 事务是由一步或几步数据库操作序列组成逻辑执行单元,这系列操作要么全部执行,要么全部放弃执行.事务通常以 BEGIN TRANSACTION 开始 ...
- MySQL多表查询、事务、DCL:内含mysql如果忘记密码解决方案
MySQL多表查询.事务.DCL 多表查询 * 查询语法: select 列名列表 from 表名列表 where.... * 准备sql # 创建部门表 CREATE TABLE dept( id ...
- MySQL:事务机制
为什么需要事务处理? 在执行SQL语句的时候,某些业务要求,一系列操作必须全部执行,而不能仅执行一部分. MySQL5.0后引入了事务机制,MySQL支持几种基本的数据库引擎,并非所有引擎都支持事务处 ...
- MySql多表查询_事务_DCL(资料三)
今日内容 1. 多表查询 2. 事务 3. DCL 多表查询: * 查询语法: select 列名列表 from 表名列表 where.... * 准备sql # 创建部门表 CREATE TABLE ...
- MySQL(8) - MySQL的事务机制
MySQL数据库的事务机制 1.1.事务的概念和特性 1.2.事务的隔离级别 repeatable read是mysql默认的事务隔离级别 #事务A #事务A,临时修改工资,未commit, STAR ...
随机推荐
- pandas的离散化,面元划分
pd.cut pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=, include_lowest=False) ...
- java高并发编程(二)
马士兵java并发编程的代码,照抄过来,做个记录. 一.分析下面面试题 /** * 曾经的面试题:(淘宝?) * 实现一个容器,提供两个方法,add,size * 写两个线程,线程1添加10个元素到容 ...
- Oracle关于自连接、左外连接、右外连接、全连接
关于自连接.左外连接.右外连接.全连接: 简单来讲,随便来个例子: A表 B表 id name id name 1 a 1 b 2 b 3 c 4 c 内连接就是左表和右表相同的数据: s ...
- vuex状态管理2
在vuex的官网https://vuex.vuejs.org中,提到的核心概念一共有5个,分别是State.Getter.Mutation.Action和Module,在上一篇随笔中,我们主要用到其中 ...
- Git revert及其他一些回退操作
放弃本地的代码和本地提交,希望会退到远程分支的某次提交时,使用git reset --hard fa042ce. 本地已提交,但是发现有问题,想要撤销本地的提交,使用git checkout /trs ...
- Kowala协议:一组分布式,自我调节,资产跟踪特性的加密货币(二)
对于稳定币来言,设计过程中会遇到很多细节的问题,今天来讲述下有关通证设计过程中的一些问题. 1.计算手续费 计算费是交易费的一部分,转移给kUSD矿工,并由以下公式决定: 其gasUsed(t) 是用 ...
- [UE4]区分敌我
第一方法是:使用Actor对象的Tag: 只要继承自Actor的对象,都会有Tags这个属性,这是一个数组,可以添加多个Tag. 在蓝图中可以使用“get Components by Tag”获得某个 ...
- Java IO网络编程经典模板
本文会从传统的BIO到NIO再到AIO自浅至深介绍,并附上完整的代码讲解. 下面代码中会使用这样一个例子:客户端发送一段算式的字符串到服务器,服务器计算后返回结果到客户端. 代码的所有说明,都直接作为 ...
- Java中的Future相关
先上一个场景:假如你突然想做饭,但是没有厨具,也没有食材.网上购买厨具比较方便,食材去超市买更放心. 实现分析:在快递员送厨具的期间,我们肯定不会闲着,可以去超市买食材.所以,在主线程里面另起一个子线 ...
- android设置系统横屏方案
效果如下: 实现方案: 1.ChangeOrientationService.java /** * @描述 强制旋转屏幕服务 * @作者 tll * @时间 2018/1/5 */ public cl ...