目录
基本使用
1)连接数据库
2)执行SQL语句
3)获取结果集(查询操作专有)
实例
事务控制
1)开启事务
2)事务回滚
3)事务提交
4)自动提交
预处理
1)$sql = “???”
2)创建预编译对象
3)参数赋值
4)执行代码
5)获取结果(查询操作专有)
首页 后端开发 php教程 php操作MySQL数据库之PDO方式

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 -&gt; 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 -&gt; commit();
    echo '操作成功';
}else{
    $pdo -&gt; rollback();
    echo '操作失败';
}

$pdo -&gt; setAttribute(PDO::ATTR_AUTOCOMMIT,1);
登录后复制

预处理

1)$sql = “???”

SQL语句的VALUE里面的参数,使用问号代替。

2)创建预编译对象

$pdo -&gt; prepare($sql)
登录后复制

3)参数赋值

$stmt -&gt; bindParam(参数位置 | 参数伪名, 变量名(需要有值)) 

$stmt -&gt; bindValue(参数参数位置 | 参数伪名, 变量名(需要有值)| 具体的值)
登录后复制

$stmt -> bindParam详解:

$sql = &quot;UPDATE users SET `money`=100 WHERE id = :num &quot;;

// 注意,这里必须先给$num赋值
$num = 3;
$stmt -&gt; bindParam(&quot;:num&quot;,$num);


另一种形式(占位符变成问号)
$sql = &quot;UPDATE users SET `money`=100 WHERE id = ? &quot;;

// 注意,这里必须先给$num赋值
$num = 3;
$stmt -&gt; bindParam(&quot;:num&quot;,$num);
登录后复制

$stmt -> bindValue详解

在使用bindValue绑定变量后,即使在执行execute之前改变了该变量的值,那么结果也不会变。

详细请看这里这里写链接内容

4)执行代码

$stmt -&gt; execute()
登录后复制

5)获取结果(查询操作专有)

$stmt -&gt; fetch($mode)      获取一个结果

$stmt -&gt; 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 -&gt; prepare($sql);

// 参数绑定
$num = 3;
$stmt -> bindParam(":num",$num);

// 执行SQL语句
$stmt -&gt; execute();

// 获取结果集
$data = $stmt -> fetchAll(PDO::FETCH_ASSOC);

var_dump($data);
登录后复制

相关推荐:

操作MySQL数据库之MySQLI方式

以上是php操作MySQL数据库之PDO方式的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南 适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南 Dec 24, 2024 pm 04:42 PM

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

CakePHP 日期和时间 CakePHP 日期和时间 Sep 10, 2024 pm 05:27 PM

CakePHP 日期和时间

CakePHP 项目配置 CakePHP 项目配置 Sep 10, 2024 pm 05:25 PM

CakePHP 项目配置

CakePHP 文件上传 CakePHP 文件上传 Sep 10, 2024 pm 05:27 PM

CakePHP 文件上传

CakePHP 路由 CakePHP 路由 Sep 10, 2024 pm 05:25 PM

CakePHP 路由

讨论 CakePHP 讨论 CakePHP Sep 10, 2024 pm 05:28 PM

讨论 CakePHP

如何修复 MySQL 8.4 上的 mysql_native_password 未加载错误 如何修复 MySQL 8.4 上的 mysql_native_password 未加载错误 Dec 09, 2024 am 11:42 AM

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

如何设置 Visual Studio Code (VS Code) 进行 PHP 开发 如何设置 Visual Studio Code (VS Code) 进行 PHP 开发 Dec 20, 2024 am 11:31 AM

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

See all articles