博主信息
博文 40
粉丝 2
评论 1
访问量 46476
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
3.PHP使用PDO操作数据库-2019-02-22
万物皆对象
原创
902人浏览过

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举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学