Blogger Information
Blog 34
fans 1
comment 0
visits 36130
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
mysqli面向对象中的查询操作和PDO如何连接数据库以及pdo对数据库的增删改查操作--2018年9月3号
coolperJie
Original
831 people have browsed it

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注入更是让我感到了技术的无穷的奥妙,希望继续努力,继续加油!

Correction status:Uncorrected

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