博客列表 >mysqli面向对象中的查询操作和PDO如何连接数据库以及pdo对数据库的增删改查操作--2018年9月3号

mysqli面向对象中的查询操作和PDO如何连接数据库以及pdo对数据库的增删改查操作--2018年9月3号

coolperJie
coolperJie原创
2018年09月03日 23:50:23830浏览

1,以下代码主要实现了mysqli对象对数据库的查询数据的操作:

实例

<?php

//预处理查询数据操作

//链接数据库
require "demo1.php";

//准备SQL语句
$sql = "SELECT `id`,`name`,`chinese` FROM `student1` WHERE `id` > ? ;";

//创建预处理对象
$stmt = $mysqli->prepare($sql);

//绑定参数
$stmt->bind_param('i',$id);

$id= 1;

if($stmt->execute()){

	//获取结果集并放到缓存区
	$stmt->store_result();

	//将结果集中的列绑定到变量上
	$stmt->bind_result($id,$name,$chinese);	

	//结果集是否为空,只有不为空的时候才遍历
	if($stmt->num_rows > 0){
		//循环遍历结果集
		//fetch()每次获取一条记录,并将指针自动下移
		while($stmt->fetch()){
			echo 'id:'.$id.'-----姓名:'.$name.'-----语文成绩:'.$chinese.'<br>';
		}
	} else {
		exit('当前数据表中没有数据');
	}

	//释放结果集
	$stmt->free_result();

}else{
	//返回执行阶段的出错信息
    exit($stmt->errno. ': ' . $stmt->error);
}

//注销stmt对象
$stmt->close();

//关闭连接
$mysqli->close();


?>

运行实例 »

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

说明:以上代码主要运用mysqli对象连接数据库,通过预处理对象$stmt对数据库进行预处理查询数据操作,主要的知识点是参数的绑定,以及对结果集循环的遍历。

2,以下代码主要介绍了PDO对数据库的连接操作:

实例

<?php

//链接数据库
$dsn = 'mysqli:host=localhost;dbname=db100;charset=utf8';
$user = 'root';
$pass = 123456;


try{

	$pdo = new PDO($dsn,$user,$pass);
	//echo '连接成功';
}catch(PDOException $e){
	die('Connect ERROR! :'.$e->getMessage());
}

//关闭连接
//$pdo = null;

//unset($pdo)

?>

运行实例 »

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

以上代码主要实现了pdo对象连接数据库的操作,其中$dsn 是连接数据库的数据源,是确定以哪种方式连接数据库的,此处我用的为mysqli数据源连接的数据库。

3,以下代码是PDO对象通过预处理新增数据的操作:

实例

<?php

//新增记录

//链接数据库
require 'demo1.php';

//准备SQL语句,占位符换为命名占位符
$sql = "INSERT INTO `student1` SET `id`=:id,`name`=:name,`chinese`=:chinese";

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

$data = ['id'=>11,'name'=>'黄蓉','chinese'=>90];

//绑定参数
$stmt->bindParam(':id',$data['id'],PDO::PARAM_INT);
$stmt->bindParam(':name',$data['name'],PDO::PARAM_STR);
$stmt->bindParam(':chinese',$data['chinese'],PDO::PARAM_STR);

if($stmt->execute()){
	//rowCount():返回受影响的记录数量
	echo '成功添加了' . $stmt->rowCount().'条记录';
}else{
	echo '添加失败!';
	print_r($stmt->errorInfo());
	exit();
}

//关闭连接
$stmt = null;
$pdo = null;



?>

运行实例 »

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

说明:使用pdo对象中的预处理对象操作数据库,此处的占位符使用的为命名占位符,通过$stmt->execute()方法执行新增数据,并通过$stmt->rowCount()来返回受影响的记录数;

4,以下代码代码是PDO对象通过预处理更新数据的操作:

实例

<?php

//更新记录

//链接数据库
require 'demo1.php';

//准备SQL语句,占位符换为命名占位符
$sql = "UPDATE `student1` SET `name`=:name WHERE `id`=:id; ";


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

$data = ['id'=>11,'name'=>'郭靖'];

//绑定参数
$stmt->bindParam('id',$data['id'],PDO::PARAM_INT);
$stmt->bindParam('name',$data['name'],PDO::PARAM_STR);

if($stmt->execute()){
	//rowCount():返回受影响的记录数量
	echo '成功修改了' . $stmt->rowCount().'条记录';
}else{
	echo '修改失败!';
	print_r($stmt->errorInfo());
	exit();
}

//关闭连接
$stmt = null;
$pdo = null;


?>

运行实例 »

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

说明:更新操作同样使用pdo对象中的预处理对象操作数据库,此处的占位符使用的为命名占位符,通过改变不同的SQL语句实现更新操作并结合$stmt->execute()方法执行更新数据,并通过$stmt->rowCount()来返回受影响的记录数;

5,以下代码代码是PDO对象通过预处理删除数据的操作:

实例

<?php

//删除记录

//链接数据库
require 'demo1.php';

//准备SQL语句,占位符换为命名占位符
$sql = "DELETE FROM `student1`  WHERE `english`=:english; ";


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

$english = 0;

//绑定参数
$stmt->bindParam('english',$english,PDO::PARAM_STR);


if($stmt->execute()){
	//rowCount():返回受影响的记录数量
	echo '成功删除了' . $stmt->rowCount().'条记录';
}else{
	echo '删除失败!';
	print_r($stmt->errorInfo());
	exit();
}

//关闭连接
$stmt = null;
$pdo = null;


?>

运行实例 »

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

说明:与新增,更新操作相同,删除操作同样使用pdo对象中的预处理对象操作数据库,此处的占位符使用的为命名占位符,通过改变不同的SQL语句实现删除操作并结合$stmt->execute()方法执行删除数据,并通过$stmt->rowCount()来返回受影响的记录数;

6,以下代码是PDO对象通过预处理查询数据的操作:

实例

<?php

//查询记录

//链接数据库
require 'demo1.php';

//准备SQL语句
$sql = "SELECT `id`,`name`,`chinese` FROM `student1` WHERE `id` > :id";

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

$id = 1;
//绑定参数
$stmt->bindParam('id',$id,PDO::PARAM_INT);

if($stmt->execute()){
	//第一种方法
	$rows = $stmt->fetchAll();
	foreach($rows as $row ){
		echo '编号:'.$row['id'],'名字:'.$row['name'],'语文成绩:'.$row['chinese'],'<br>';
		}

	//第二种方法
	// while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
	// 	echo var_export($row).'<br>';
	// 	}

}else{
	echo '查询失败!';
	print_r($stmt->errorInfo());
	exit();
}

//关闭连接
$stmt = null;
$pdo = null;




?>

运行实例 »

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

实例

<?php

//查询记录

//链接数据库
require 'demo1.php';

//准备SQL语句
$sql = "SELECT `id`,`name`,`chinese` FROM `student1` WHERE `id` > :id";

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

$id = 1;
//绑定参数
$stmt->bindParam('id',$id,PDO::PARAM_INT);
//将结果集中的列绑定到变量上
$stmt->bindColumn('name', $name);
$stmt->bindColumn('chinese', $chinese);

if($stmt->execute()){

	//第三种方法
	//用列变量来遍历结果集
	while ($stmt->fetch(PDO::FETCH_BOUND)) {
    	echo '编号',$id,'姓名: ',$name, '语文成绩: ', $chinese, '<br>';
	}
}else{
	echo '查询失败!';
	print_r($stmt->errorInfo());
	exit();
}

//关闭连接
$stmt = null;
$pdo = null;




?>

运行实例 »

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


说明:预处理查询数据操作,与前三者首先是SQL语句不同,使用的查询数据的SQL语句,其次查询语句需要获取结果集从而打印到屏幕,第一种方法是通过$stmt->fetchAll()函数,使用foreach或while循环遍历结果集的方式,此方法不许要绑定待查询数据的参数,第二种方法先将结果集中的列绑定到变量上,再通过$stmt->fetch(PDO::FETCH_BOUND)循环输出结果集。

7,PDO为操作数据库提供了统一的接口,使对数据库的操作更加的规范统一,同时比其他的方式更高效。

总结:此次学习mysqli对数据库的增删改查操作,相对来说感觉是有点麻烦的,学习了mysqli的只是后,又学了pdo对数据哭的增删改查操作,相对mysqli来说pdo使用起来更加的方便间接,其中的预处理防止SQL注入更是让我感到了技术的无穷的奥妙,希望继续努力,继续加油!

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议