博主信息
博文 61
粉丝 0
评论 0
访问量 74627
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PDO预处理连接数据库,添加操作,更新操作
Pengsir
原创
2206人浏览过

PDO连接数据库:

实例

<?php
/医院
 * PDO连接数据库
 */
//1.配置参数
/*
 * 数据源:DSN
 * 基本格式:数据库的类型:属性=值...
 * mysql:host=127.0.0.1;dbname=php;charset=utf-8;port=3306
 */
$pdo=new PDO('mysql:dbname=php','root','root');

运行实例 »

点击 "运行实例" 按钮查看在线实例

PDO预处理添加操作:

实例

<?php
header("Content-type: text/html; charset=utf-8");
/医院
 * PDO预处理添加操作
 * PDO的预处理使用的是PDOStatement对象
 * $pdo->prepare()创建stmt对象
 * sql语句中的占位符全部采用:命名占位符,不用?
 */
//1.连接数据库
require 'pdo_connect.php';

//2.sql语句 INSERT user SET name =:name,email=:email,password=sha1(:password)
$sql="INSERT `user` SET `user_name`=:user_name,`email`=:email,`password`=sha1(:password)";

//3.创建PDO预处理对象stmt
$stmt=$pdo->prepare($sql);

//4.要插入到数据库里的数据 data数组中的参数对应$sql命名占位符
$data=['user_name'=>'张飞','email'=>'zf@qq.com','password'=>'333'];

/*
 * 4.1绑定变量到预处理对象:SQL语句对象
 * $stmt->bindParam(参数,变量,类型)
 */
//$stmt->bindParam(':name',$data['user_name'],PDO::PARAM_STR);
//$stmt->bindParam(':email',$data['email'],PDO::PARAM_STR);
//$stmt->bindParam(':password',$data['password'],PDO::PARAM_STR);
//5.执行新增操作
if($stmt->execute($data))
{
    //成功会返回受影响的记录数:新增的记录数量
    echo '<h3>成功添加了'.$stmt->rowCount().'条记录</h3>';
}else{
    echo '<h3>添加失败</h3>';
    print_r($stmt->errorInfo());
    die();
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

PDO预处理更新操作:

实例

<?php
header("Content-type: text/html; charset=utf-8");
/医院
 * PDO预处理更新操作
 * PDO的预处理使用的是PDOStatement对象
 * $pdo->prepare()创建stmt对象
 * sql语句中的占位符全部采用:命名占位符,不用?
 */
//1.连接数据库
require 'pdo_connect.php';

//2.sql语句 UPDATE user SET name =:name,email=:email,password=sha1(:password)
$sql="UPDATE `user` SET `user_name`=:user_name,`email`=:email,`password`=sha1(:password) WHERE `user_id`=:user_id";

//3.创建PDO预处理对象stmt
$stmt=$pdo->prepare($sql);

//4.要更新的数据
$data=['user_name'=>'孔明','email'=>'km@qq.com','password'=>'333','user_id'=>1];

/*
 * 4.1绑定变量到预处理对象:SQL语句对象
 * $stmt->bindParam(参数,变量,类型)
 */
//$stmt->bindParam(':name',$data['user_name'],PDO::PARAM_STR);
//$stmt->bindParam(':email',$data['email'],PDO::PARAM_STR);
//$stmt->bindParam(':password',$data['password'],PDO::PARAM_STR);
//5.执行操作
if($stmt->execute($data))
{
    //成功会返回受影响的记录数
    echo '<h3>更新了'.$stmt->rowCount().'条记录</h3>';
}else{
    echo '<h3>更新失败</h3>';
    print_r($stmt->errorInfo());
    die();
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

总结:

      在生成网页时,许多PHP脚本通常都会执行除参数之外,其他部分完全相同的查询语句,针对这种重复执行一个查询,每次迭代使用不同的参数情况,PDO提供了一种名为预处理语句(prepared statement)的机制。它可以将整个SQL命令向数据库服务器发送一次,以后只有参数发生变化,数据库服务器只需对命令的结构做一次分析就够了,即编译一次,可以多次执行。会在服务器上缓存查询的语句和执行过程,而只在服务器和客户端之间传输有变化的列值,以此来消除这些额外的开销。这不仅大大减少了需要传输的数据量,还提高了命令的处理效率。可以有效防止SQL注入,在执行单个查询时快于直接使用query()或exec()的方法,速度快且安全

       PDO对预处理语句的支持需要使用PDOStatement类对象,但该类的对象并不是通过NEW关键字实例化出来的,而是通过执行PDO对象的prepare()方法,在数据库服务器中准备好一个预处理的SQL语句后直接返回的。如果通过之前执行PDO对象的query()方法返回的PDOStatement类对象,只代表的是一个结果集对象。而如果通过执行PDO对象中的prepare()方法产生的PDOStatement类对象,则为一个查询对象,能定义和执行参数化的SQL命令

运行效果图:



PDO预处理操作数据库.png

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学