Blogger Information
Blog 61
fans 0
comment 0
visits 62847
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PDO预处理连接数据库,添加操作,更新操作
Pengsir
Original
2018 people have browsed it

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

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post