php操作MySQL数据库之PDO方式
Jun 06, 2018 am 09:34 AM
mysql
php
这篇文章主要介绍了关于php操作MySQL数据库之PDO方式 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
基本使用
1)连接数据库
$pdo = new PDO(“mysql:host=localhost; dbname=db_name”,username,password);
登录后复制
2)执行SQL语句
$pdo -> query() 针对返回有结果的操作 适用于SELECT $pdo -> exec() 针对没有返回结果的操作 适用于增删改
登录后复制
3)获取结果集(查询操作专有)
$stmt -> fetch($mode) 获取一条数据 $stmt -> fetchAll($mode) 获取所有数据
登录后复制
mode可选择 PDO::FETCH_ASSOC,结果变成关联数组。
实例
<?php // PDO操作数据库例子(查询) header("content-type:text/html;charset=utf-8"); // 连接数据库 $dsn = "mysql:host=localhost; dbname=test"; $pdo = new PDO($dsn,'root','123456789'); /*********** 执行SQL语句 *************/ // 设置字符集 $pdo -> exec("set names utf8"); $sql = "SELECT * FROM users"; $stmt = $pdo -> query($sql); // 获取结果集 $data = $stmt -> fetchAll(PDO::FETCH_ASSOC); var_dump($data);
登录后复制
事务控制
1)开启事务
$pdo -> beginTransaction()
登录后复制
2)事务回滚
$pdo -> rollback()
登录后复制
3)事务提交
$pdo -> commit()
登录后复制
4)自动提交
$pdo -> setAttribute(PDO::ATTR_AUTOCOMMIT,1)
登录后复制
实例
<?php header("content-type:text/html;charset=utf-8"); // 连接数据库 $dsn = "mysql:host=localhost; dbname=test"; $pdo = new PDO($dsn,'root','123456789'); // 执行SQL语句 // 设置字符集 $pdo -> exec("set names utf8"); // 开启事务 $pdo -> beginTransaction(); // SQL语句 $sql1 = "UPDATE users SET `money`=`money`+1 WHERE `id` = 1 "; $r1 = $pdo -> exec($sql1); $sql2 = "UPDATE users SET `money`=`money`-1 WHERE `id` = 12 "; $r2 = $pdo -> exec($sql2); // 做判断 if($r1 > 0 && $r2 > 0){ $pdo -> commit(); echo '操作成功'; }else{ $pdo -> rollback(); echo '操作失败'; } $pdo -> setAttribute(PDO::ATTR_AUTOCOMMIT,1);
登录后复制
预处理
1)$sql = “???”
SQL语句的VALUE里面的参数,使用问号代替。
2)创建预编译对象
$pdo -> prepare($sql)
登录后复制
3)参数赋值
$stmt -> bindParam(参数位置 | 参数伪名, 变量名(需要有值)) $stmt -> bindValue(参数参数位置 | 参数伪名, 变量名(需要有值)| 具体的值)
登录后复制
$stmt -> bindParam详解:
$sql = "UPDATE users SET `money`=100 WHERE id = :num "; // 注意,这里必须先给$num赋值 $num = 3; $stmt -> bindParam(":num",$num); 另一种形式(占位符变成问号) $sql = "UPDATE users SET `money`=100 WHERE id = ? "; // 注意,这里必须先给$num赋值 $num = 3; $stmt -> bindParam(":num",$num);
登录后复制
$stmt -> bindValue详解
在使用bindValue绑定变量后,即使在执行execute之前改变了该变量的值,那么结果也不会变。
详细请看这里这里写链接内容
4)执行代码
$stmt -> execute()
登录后复制
5)获取结果(查询操作专有)
$stmt -> fetch($mode) 获取一个结果 $stmt -> fetchAll($mode) 获取所有结果
登录后复制
mode可选择 PDO::FETCH_ASSOC,结果变成关联数组。
实例
<?php // MySQLi预处理控制例子(查询) header("content-type:text/html;charset=utf-8"); // 连接数据库 $dsn = "mysql:host=localhost; dbname=test"; $pdo = new PDO($dsn,'root','123456789'); // 设置字符集 $pdo -> exec("set names utf8"); // SQL语句 $sql = "SELECT * FROM users WHERE id > :num "; // 创建预编译对象 $stmt = $pdo -> prepare($sql); // 参数绑定 $num = 3; $stmt -> bindParam(":num",$num); // 执行SQL语句 $stmt -> execute(); // 获取结果集 $data = $stmt -> fetchAll(PDO::FETCH_ASSOC); var_dump($data);
登录后复制
相关推荐:
以上是php操作MySQL数据库之PDO方式的详细内容。更多信息请关注PHP中文网其他相关文章!
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前
By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前
By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林

热门文章标签

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南

如何修复 MySQL 8.4 上的 mysql_native_password 未加载错误

如何设置 Visual Studio Code (VS Code) 进行 PHP 开发
