博客列表 >3.PHP使用PDO操作数据库-2019-02-22

3.PHP使用PDO操作数据库-2019-02-22

万物皆对象
万物皆对象原创
2019年02月23日 18:40:39741浏览

prepare()预处理  bindParam()参数绑定(php变量)  bindValue()参数绑定(常数) 

bindColumn()绑定一个列名到php变量   execute()执行一条语句   exec()返回受影响的行数 

fetch()返回结果集一维数组带列名key和默认key  fetchAll()返回结果集二维数组带列名key和默认key

setFetchMode()设置返回模式 lastInsertId()返回最后添加的id字段值  rowCount()返回数据的行数   

 PDO::FETCH_ASSOC  PDO::FETCH_BOUND  PDO::PARAM_INT  PDO::PARAM_STR


实例    demo01.php

<?php
// 定义常量DSN 数据库:主机=ip;库名=php
	define('DSN','mysql:host=127.0.0.1;dbname=php'); 
	define('USER','root'); // 数据库账号
	define('PWD','root');  // 数据库密码
	$in = time(); // 获取时间戳
	// try catch(PDOException $e) 捕捉连接失败的异常 里面的$e是一个异常对象
	try{
		$pdo = new PDO(DSN,USER,PWD);
		echo '数据库连接成功 ';
		print_r($pdo);
	}catch(PDOException $e){
		echo '连接失败: '.$e->getMessage(); // 获取连接失败的信息
	}
	
// 1.查询记录
	//方法1:
	/* 
	$sql_0 = "SELECT `id`,`name`,`course` FROM `staff` WHERE `id` BETWEEN :start AND :stop ";
	$res = $pdo->prepare($sql_0);
	$res->bindColumn('id',$id,PDO::PARAM_INT);
	$res->bindColumn('name',$name,PDO::PARAM_STR);
	$res->bindColumn('course',$course,PDO::PARAM_STR);
	$res->execute(['start'=>3,'stop'=>17]);
	
	echo '<h2 align="center">输出信息</h2>';
	echo '<table border="1" cellpadding="0" cellspacing="0" width="30%" align="center">';
	echo '<tr><th>Id</th><th>Name</th><th>Course</th></tr>';
	while($res->fetch(PDO::FETCH_BOUND)){
		echo '<tr bgcolor="#ff6700" align="center">';
		echo '<td>'.$id.'</td><td>'.$name.'</td><td>'.$course.'</td>';
		echo '</tr>';
	}
	echo '</table>';
	*/
	
	// 方法2:
	/*
	$sql_0 = "SELECT `id`,`name`,`course` FROM `staff` WHERE `id`>6 ";
	$res = $pdo->query($sql_0);
	$res->setFetchMode(PDO::FETCH_ASSOC);
	if($res && $res->rowCount()){
		while($row = $res->fetch()){
			echo '<pre>';
			print_r($row);
		}
	}
	*/
	// 方法3
	$sql_0 = "SELECT `id`,`name`,`course`,`intodate` FROM `staff` WHERE `id`>:id AND `name` LIKE :v";
	$res = $pdo->prepare($sql_0);
	
	$res->bindValue(':id',8,PDO::PARAM_INT);
	$v = '%m%';
	$res->bindParam(':v',$v,PDO::PARAM_STR);
	$res->execute();
	while($row = $res->fetch(PDO::FETCH_ASSOC)){
		echo '<pre>';
		var_dump($row);
	}
	
// 2.插入记录
	/*
	$sql_1 = "INSERT INTO `staff`(`name`,`age`,`sex`,`intodate`) // SQL插入语句模板
			VALUES('Jack01',13,1,'{$in}')";
	$num = $pdo->exec($sql_1);
	$id = $pdo->lastInsertId();
	if($num > 0){
		echo '<pre>';
		echo '已插入'.$num.'条记录, 主键为:'.$id;
	}
	*/
	
// 3.更新记录
	/*
	$sql_2 = "UPDATE `staff` SET `course`=:name,`intodate`=:in WHERE `id`=10"; // SQL更新语句模板
	$res = $pdo->prepare($sql_2);	// 准备执行一个sql语句 $sql_2
	// bindValue()方法把一个值绑定到一个参数中,值可以为常数
	// 参数1: 参数标识符号,占位符
	// 参数2: 绑定到参数的值,常数
	// 参数3: PDO::PARAM_* 常量 明确地指定参数的类型
	$res->bindValue(':name','HTML5',PDO::PARAM_STR); 
	// bindParam() 绑定一个参数到指定的变量名, 不能为常数
	// 参数1: 参数标识符号,占位符
	// 参数2: 绑定到sql语句参数的php变量名
	// 参数3: PDO::PARAM_* 常量 明确地指定参数的类型
	$res->bindParam(':in',$in,PDO::PARAM_INT); 
	$res->execute(); // 执行一条预处理语句
	if($res == true){
		echo '<pre>';
		echo '数据更新成功';
	}
	*/
	
// 4.删除记录
	/*
	$sql_3 = "DELETE FROM `staff` WHERE `id`=:id";
	$res = $pdo->prepare($sql_3);
	$res->execute(['id'=>2]);
	if($res == true){
		echo '<pre>';
		echo '删除成功';
	}
	*/
	
	unset($pdo); // $pdo=NULL; 关闭数据库

运行实例 »

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

实例    staff.sql

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for staff
-- ----------------------------
DROP TABLE IF EXISTS `staff`;
CREATE TABLE `staff` (
  `id` int(5) unsigned NOT NULL AUTO_INCREMENT,
  `name` char(40) NOT NULL COMMENT '名字',
  `age` tinyint(3) unsigned NOT NULL COMMENT '年龄',
  `sex` tinyint(1) unsigned NOT NULL COMMENT '1:男,  0女',
  `course` varchar(50) DEFAULT NULL COMMENT '课程',
  `mobile` char(11) DEFAULT NULL COMMENT '手机',
  `intodate` char(50) NOT NULL COMMENT '时间',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of staff
-- ----------------------------
INSERT INTO `staff` VALUES ('3', 'Tom3', '14', '1', 'JavaScript', '19514942869', '1550914952');
INSERT INTO `staff` VALUES ('4', 'Tom4', '26', '0', 'jQuery', '19514992865', '1550914972');
INSERT INTO `staff` VALUES ('5', 'Tom5', '30', '1', 'Vue.js', '15514912862', '1550914992');
INSERT INTO `staff` VALUES ('6', 'Tom6', '19', '1', 'C++', '13514932863', '1550915056');
INSERT INTO `staff` VALUES ('7', 'Tom7', '27', '1', 'Java', '15514972867', '1550915072');
INSERT INTO `staff` VALUES ('8', 'Tom8', '12', '1', 'Python', '18514912868', '1550915097');
INSERT INTO `staff` VALUES ('9', 'Tom9', '29', '0', 'CSS3', '17514982863', '1550915106');
INSERT INTO `staff` VALUES ('10', 'Tom10', '16', '0', 'HTML5', '14514962864', '1550915121');
INSERT INTO `staff` VALUES ('14', 'Jack01', '13', '1', 'PHP', null, '1550911289');
INSERT INTO `staff` VALUES ('16', 'Jack01', '13', '1', 'C', null, '1550911206');
INSERT INTO `staff` VALUES ('17', 'Jack01', '13', '1', 'C#', null, '1550911253');

运行实例 »

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



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