首页
文章
留言
首页
文章
留言
PHP开发之PDO使用总结
2016 年 11 月 12 日
后端
PHP
PDO 是 PHP 数据对象(PHP Data Object)的缩写。并不能使用 PDO 扩展本身执行任何数据库操作,必须使用一个 database-specific PDO driver(针对特定数据库的 PDO 驱动)访问数据库服务器。PDO 并不提供数据库抽象,它并不会重写 SQL 或提供数据库本身缺失的功能,如果你需要这种功能,你需要使用一个更加成熟的抽象层。 **连接MySQL数据库:** ```php $server = "localhost"; $user = "root"; $pwd = "123456"; $db = "student"; try { $conn = new PDO("mysql:host=$server;dbname=$db", $user, $pwd); echo "连接成功"; } catch (PDOException $e) { echo $e->getMessage(); } ``` **创建MySQL数据库:** ```php $server = "localhost"; $user = "root"; $pwd = "123456"; $db = "student"; try { $conn = new PDO("mysql:host=$server;", $user, $pwd); // 设置 PDO 错误模式为异常 ,用于抛出异常 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "create database mydb"; $conn->exec($sql); echo "数据库创建成功
"; }catch (PDOException $e) { echo $sql . "
" . $e->getMessage(); } // 关闭连接 $conn = null; ``` **创建MySQL数据表:** ```php $server = "localhost"; $user = "root"; $pwd = "123456"; $db = "mydb"; try { $conn = new PDO("mysql:host=$server;dbname=$db", $user, $pwd); $conn -> setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $sql = "create table myfriend( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30) NOT NULL , email VARCHAR(50), sex CHAR(1) )"; $conn->exec($sql); echo "数据表创建成功"; }catch (PDOException $e) { echo $sql . "
" . $e->getMessage(); } $conn = null; ``` **插入单条记录:** ```php $server = "localhost"; $user = "root"; $pwd = "123456"; $db = "mydb"; try { $conn = new PDO("mysql:host=$server;dbname=$db", $user, $pwd); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "insert into myfriend values (1, '吴杰', '12345678@qq.com', '男')"; $conn->exec($sql); echo "数据插入成功"; }catch (PDOException $e) { echo $sql . "
" . $e->getMessage(); } $conn = null; ``` **插入多条记录:** ```php $server = "localhost"; $user = "root"; $pwd = "123456"; $db = "mydb"; try { $conn = new PDO("mysql:host=$server;dbname=$db", $user, $pwd); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // 开始事务 $conn->beginTransaction(); // sql语句 $conn->exec("insert into myfriend values (3,'吴杰','1234568@gmail.com','男')"); $conn->exec("insert into myfriend values (4,'john','654321@gmail.com','男')"); $conn->exec("insert into myfriend values (5,'jack','7890123@gmail.com','男')"); // 提交事务 $conn->commit(); echo "多条记录提交成功"; }catch (PDOException $e) { // 如果插入失败则回滚事务 $conn->rollBack(); echo $e->getMessage(); } $conn = null; ``` **MySQL 预处理语句:** > 预处理语句用于执行多个相同的 SQL 语句,并且执行效率更高。 > 预处理语句的工作原理如下: > 预处理:创建 SQL 语句模板并发送到数据库。预留的值使用参数 "?" 标记 。例如: > INSERT INTO MyGuests(firstname, lastname, email) VALUES(?,?,?) > 数据库解析,编译,对SQL语句模板执行查询优化,并存储结果不输出。 > 执行:最后,将应用绑定的值传递给参数("?" 标记),数据库执行语句。应用可以多次执行语句,如果参数的值不一样。 > 相比于直接执行SQL语句,预处理语句有两个主要优点: > 预处理语句大大减少了分析时间,只做了一次查询(虽然语句多次执行)。 > 绑定参数减少了服务器带宽,你只需要发送查询的参数,而不是整个语句。 > 预处理语句针对SQL注入是非常有用的,因为参数值发送后使用不同的协议,保证了数据的合法性。 ```php $server = "localhost"; $user = "root"; $pwd = "123456"; $db = "mydb"; try { $conn = new PDO("mysql:host=$server;dbname=$db", $user, $pwd); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // 预处理sql并绑定参数 $stmt = $conn->prepare("insert into myfriend VALUES (:id, :name, :email, :sex)"); $stmt->bindParam(':id',$id); $stmt->bindParam(':name',$name); $stmt->bindParam(':email',$email); $stmt->bindParam(':sex',$sex); // 填充数据,可以一次填充多条记录 $id = 6; $name = "ting"; $email = '123456@163.com'; $sex = "女"; $stmt->execute(); echo "预处理动作完成"; }catch (PDOException $e) { echo $e->getMessage(); } $conn = null; ```
0
相关文章
Nginx常用配置说明
Redis基本使用总结
PHP常用函数总结
PHP开发之字符串处理
Composer使用总结
全部分类
前端
后端
运维
架构
算法
数据库
移动应用
桌面应用
程序开发
热门标签
C++
OpenResty
Objective-C
Nginx
NoSQL
Qt
CentOS
JavaScript
Composer
Elasticsearch
Android
macOS
GUI
Python
Kubernetes
Git
多线程
Sphinx
Lua
Kafka
Supervisor
PHP
HTML
Linux
MongoDB
iOS
Redis
爬虫
Docker
Shell
MySQL
CSS
热门文章
OpenResty+Lua+Kafka收集日志
Kubernetes介绍
macOS常用命令
Composer使用总结
Python爬虫之Beautiful Soup的使用
10种常见的软件架构模式
Git使用总结
Sphinx使用总结
Qt实现TCP通讯
iOS开发之类与类扩展