Blogger Information
Blog 40
fans 2
comment 1
visits 38911
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
3.PHP使用PDO操作数据库-2019-02-22
万物皆对象
Original
742 people have browsed it

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');

运行实例 »

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



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