Blogger Information
Blog 15
fans 0
comment 0
visits 12374
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PDO连接MySQL数据库,以及增删改查的操作方法 180830课后作业
一点蓝的博客
Original
831 people have browsed it

本次作业主要包含PDO(php data object)连接MySQL数据库,以及相关数据的增、删、改、查操作

实例1数据库连接以及新增数据

<?php
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');//连接数据库并返回pdo对象
/*$sql = "INSERT `user` SET `user_name`= :user_name , `email`= :email, `password`= sha1(:password);";//准备新增数据sql语句,并且使用命名占位符:name(mysqli中使用的是?占位符)
$stmt = $pdo -> prepare($sql);//创建预处理对象
$data = ['user_name'=>'Sul666','email'=>'sy@qq.com','password'=>888];//设置参数
$stmt -> bindParam(':user_name',$data['user_name'],PDO::PARAM_STR);
$stmt -> bindParam(':email',$data['email'],PDO::PARAM_STR);
$stmt -> bindParam(':password',$data['password'],PDO::PARAM_STR);
if ($stmt->execute()){//执行语句
    echo '<h3>成功添加了'.$stmt->rowCount().'条记录</h3>';//rowCount(): 返回受影响的记录数量
} else {
    echo '<h3>添加失败</h3>';
    print_r($stmt->errorInfo());//返回的错误信息是一个数组
    exit();
}*/
//优化写法
$stmt = $pdo -> prepare("INSERT `user` SET `user_name`= :user_name , `email`= :email, `password`= sha1(:password);");//创建预处理对象
$stmt->execute(['user_name'=>'Sul111','email'=>'sy1@qq.com','password'=>888]);
$stmt->execute(['user_name'=>'Sul222','email'=>'sy2@qq.com','password'=>888]);
$stmt->execute(['user_name'=>'Sul333','email'=>'sy3@qq.com','password'=>888]);
$stmt->execute(['user_name'=>'Sul444','email'=>'sy4@qq.com','password'=>888]);
$stmt->execute(['user_name'=>'Sul555','email'=>'sy5@qq.com','password'=>888]);
$stmt->execute(['user_name'=>'Sul777','email'=>'sy7@qq.com','password'=>888]);
echo '<h3>成功添加了'.$stmt->rowCount().'条记录</h3>';//rowCount(): 返回受影响的记录数量
$stmt = null;//关闭预处理对象
$pdo = null;//关闭连接

运行实例 »

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

实例2更新数据

<?php
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');//连接数据库并返回pdo对象
$stmt = $pdo->prepare("UPDATE `user` SET `email`= :email WHERE `id`= :id");//创建预处理对象
$stmt->execute(['email'=>'suyh666@qq.com','id'=>9]);//执行更新语句
$stmt->execute(['email'=>'suyh555@qq.com','id'=>8]);//执行更新语句
$stmt->execute(['email'=>'suyh444@qq.com','id'=>7]);//执行更新语句
$stmt->execute(['email'=>'suyh333@qq.com','id'=>6]);//执行更新语句
$stmt->execute(['email'=>'suyh222@qq.com','id'=>5]);//执行更新语句
echo '<h3>成功更新了'.$stmt->rowCount().'条记录</h3>';//返回记录值
$stmt = null;//注销预处理对象
$pdo = null;//关闭连接
//UPDATE '表' SET `字段`= :name WHERE `id`= :id;//更新语句

运行实例 »

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

实例3删除数据

<?php
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');//连接数据库并返回pdo对象
$stmt = $pdo->prepare("DELETE FROM `user` WHERE `id`= :id");//创建预处理对象
$stmt -> execute(['id'=> 9]);
$stmt -> execute(['id'=> 8]);
$stmt -> execute(['id'=> 7]);
$stmt -> execute(['id'=> 6]);
echo '<h3>成功删除了'.$stmt->rowCount().'条记录</h3>';//以上方法执行多条时返回记录值也为1
$stmt = null;//注销预处理对象
$pdo = null;//关闭连接
//DELETE FROM '表' WHERE `id`= :id;//删除语句

运行实例 »

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

实例4数据查询及返回值

<?php
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');//连接数据库并返回pdo对象
$stmt = $pdo->prepare("SELECT `user_name`,`email` FROM `user` WHERE `id`< :id");//创建预处理对象
$stmt -> execute(['id' => 4]);
while ($rows = $stmt ->fetch(PDO::FETCH_ASSOC)){//PDO::FETCH_ASSOC:返回一个索引为结果集列名的数组
    echo var_export($rows),'<br>';//输出id<4的循环结果
}
//以下内容需要了解:
// 一次性取出fetchAll()
//$rows = $stmt->fetchAll();
//foreach ($rows as $row) {//遍历所有数组,弊端没有条件限制全部输出
//    echo 'name: ',$row['name'],',   email: ',$row['email'],'<br>';
//}
//fetchColumu()从结果集中的下一行返回单独的一列
//echo $stmt->fetchColumn(0),'<br>';//获取一行一列,无法获取同一行其它列
//echo $stmt->fetchColumn(1),'<br>';//指针自动下移,获取二行2列

/*$stmt = $pdo->prepare("select count(*) from staff where salary > :salary");//创建预处理对象,查询表staff,查询条件 salary,
$stmt->execute(['salary'=>4000]);//执行查询 条件salary大于4000
echo '工资大于4000的人数: '. $stmt->fetchColumn();//获取结果集记录数量的方法:通过以上count()查询符合条件的数量然后通过fetchCloumn()返回行数即可*/

/*//将结果集中的列绑定到变量上
// bindColumn()绑定一列到一个 PHP 变量(数组)
//$stmt->bindColumn('user_name', $user_name);
//$stmt->bindColumn('email', $email);
//用列的变量来遍历结果集
while ($stmt->fetch(PDO::FETCH_BOUND)) {//返回 TRUE ,并分配结果集中的列值给 PDOStatement::bindColumn() 方法绑定的 PHP 变量。
    echo '姓名: ',$user_name, ',  邮箱: ', $email, '<br>';
}
以上注释内容均已测试体验理解*/


运行实例 »

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

手抄:

083001.jpg

问答:获取结果集记录数量的正确方式是什么?

答:rowCount主要针对写的操作(新增、删除、更新),返回结果值记录数量使用fetchColumn(),在准备查询语句时,用count()计算出查询的条数,通过fetchColumn()返回最后一行输出数值(ftchColumn()指针自动下移)。

总结:

1在连接MySQL数据库上和进行增删改查等操作的结构顺序上和mysqli类似,但是PDO使用时更为直接明了

2sql语句上的占位符使用  :命名

3绑定参数简化操作直接将参数写入execute()括号中

4写操作类(新增、更新、删除)的返回值用rowCount()(表示受影响的记录数量);查询操作根据条件在sql查询语句中使用count()计算一下查询条数,返回值用fetchColumn()

5bindColumn()绑定一列到一个 PHP 变量(数组);fetchColumu()从结果集中的下一行返回单独的一列;PDO::FETCH_ASSOC:返回一个索引为结果集列名的数组;PDO::FETCH_BOUND)) 返回 TRUE ,并分配结果集列值给 PDOStatement::bindColumn() 方法绑定的 PHP 变量。

6学习过mysqli的操作方法PDO的数据库连接以及增删改查操作相对容易理解,但PDO类及PDOStatement 类需要多看多背多尝试,才能理解更深刻

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