前两天学习了数据库的增删改查,这两天学习了PHP中利用PDO对数据库进行操作。
PDO的数据库操作的基本流程为
实例
//第一步,连接数据库 $pdo=new PDO("'type':host=localhost;dbname=dbname",$username,$password); //第二步,创建SQL语句对象 //查询数据 $select='SELECT * FROM `表名` WHERE 条件'; //更新数据 $update='UPDATE `表名` SET `字段1`=:字段1,`字段2`=:字段2...WHERE 条 件 '; //添加数据 $insert='INSERT INTO `表名` SET `字段1`=:字段1,`字段2`=:字段2...'; //删除数据,删除数据必须添加条件控制,否则就是删除表 $delete='DELETE `表名` WHERE 条件'; //第三步,创建预处理对象 $stmt=$pdo->prepare(SQL语句); //第四步,进行变量绑定, //根据SQL语句绑定变量 $stmt->bindParam('字段',变量,字段类型); //常用的字段类型是PDO::PARAM_STR(字符串)和PDO::PARAM_INT(整型) //第五步,执行SQL,SELECT使用fetch(),fetchAll(),bindcolumn()获取需要返回的结果集 $stmt->execute(); //第六步,关闭连接 $pdo=null;//或者 unset($pdo);
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例
//批量添加评论,先写一个评论数组 $comment=[ [ 'mov_id'=>1, 'name'=>'小白', 'time'=>'2019-09-21', 'content'=>'这个算是良心剧了', 'img'=>'au_1.jpeg' ], [ 'mov_id'=>1, 'name'=>'小白', 'time'=>'2019-09-21', 'content'=>'我喜欢这个剧', 'img'=>'au_1.jpeg' ], [ 'mov_id'=>2, 'name'=>'小黑', 'time'=>'2019-09-22', 'content'=>'这个是什么啊', 'img'=>'au_2.jpeg' ], [ 'mov_id'=>2, 'name'=>'小黑', 'time'=>'2019-09-22', 'content'=>'不***', 'img'=>'au_2.jpeg' ], [ 'mov_id'=>3, 'name'=>'小白', 'time'=>'2019-09-21', 'content'=>'这个算是良心剧了', 'img'=>'au_1.jpeg' ], [ 'mov_id'=>3, 'name'=>'小白', 'time'=>'2019-09-21', 'content'=>'我喜欢这个剧', 'img'=>'au_1.jpeg' ], [ 'mov_id'=>4, 'name'=>'小黑', 'time'=>'2019-09-22', 'content'=>'这个是什么啊', 'img'=>'au_2.jpeg' ], [ 'mov_id'=>4, 'name'=>'小黑', 'time'=>'2019-09-22', 'content'=>'不***', 'img'=>'au_2.jpeg' ], ]; //因为是一个二维数组,所以使用foreach循环数组,以便取数据方便 foreach($comment as $value){ $insert_com='insert into `comment` set `mov_id`=:mov_id,`name`=:name,`time`=:time,`content`=:content,`img`=:img'; $stmt_insert_com=$pdo->prepare($insert_com); $stmt_insert_com->bindParam('mov_id',$value['mov_id'],PDO::PARAM_INT); $stmt_insert_com->bindParam('name',$value['name'],PDO::PARAM_STR); $stmt_insert_com->bindParam('time',$value['time'],PDO::PARAM_STR); $stmt_insert_com->bindParam('content',$value['content'],PDO::PARAM_STR); $stmt_insert_com->bindParam('img',$value['img'],PDO::PARAM_STR); if($stmt_insert_com->execute()){ if($stmt_insert_com->rowCount()>0){ echo '数据添加了'.$stmt_insert_com->rowCount().'条,最后一条的id是'.$pdo->lastInsertId().'<br>'; } } }
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例
//更新评论数据, $up='UPDATE `comment` SET `name`=:name WHERE `com_id`>:com_id'; $stmt_up=$pdo->prepare($up); $name='小紫'; $com_id=4; $stmt_up->bindParam('name',$name,PDO::PARAM_STR); $stmt_up->bindParam('com_id',$com_id,PDO::PARAM_INT); if($stmt_up->execute()){ if($stmt_up->rowCount()>0){ echo '成功更新了'.$stmt_up->rowCount().'条数据'; } }
运行实例 »
点击 "运行实例" 按钮查看在线实例
作业:
第一步,获取数据源,连接数据库
实例
$db=[ 'type'=>'mysql', 'host'=>'localhost', 'dbname'=>'www.tao.io', 'username'=>'root', 'userpass'=>'root' ]; //创建数据源 $dsn="{$db['type']}:host={$db['host']};dbname={$db['dbname']}"; //连接数据库 //$pdo = new PDO($dsn,$db['username'],$db['userpass']); try{ $pdo=new PDO($dsn,$db['username'],$db['userpass']); }catch (PDOException $e){ die('数据库连接失败'.$e->getMessage()); }
运行实例 »
点击 "运行实例" 按钮查看在线实例
第二步,执行处理查询语句
实例
//第一个,查询网站系统信息 $select_sys='select * from `system` LIMIT 1'; $stmt_sys=$pdo->prepare($select_sys); if($stmt_sys->execute()){ $sys=$stmt_sys->fetchAll(); foreach($sys as $system){ } //因为取出来的是一个二维数组,就做了一个循环,取出数据 } //第二个,查询影视的栏目数据 $select_cate='select * from `category`'; $stmt_cate=$pdo->prepare($select_cate); if($stmt_cate->execute()){ $cates=$stmt_cate->fetchAll(); }; //第三个,查询影视详情 $select_movie='select * from `movies` order by `mov_id` desc'; $stmt_movie=$pdo->prepare($select_movie); if($stmt_movie->execute()){ $movies=$stmt_movie->fetchAll(); } //第四个,查询评论 $select_com='select * from `comment` order by `com_id` desc '; $stmt_com=$pdo->prepare($select_com); if($stmt_com->execute()){ $comment=$stmt_com->fetchAll(); }
运行实例 »
点击 "运行实例" 按钮查看在线实例
最后结果从页面上来看是没有问题的,应该来说是没有问题吧!