把影视网站,数据全部从 数据库中读取
1,分类
2,详情
3,底部版权
首先我们用一个connect.php把数据库连接了,然后在文件中把这个php单独引进进来。
实例
<?php $db = [ 'type' => 'mysql', 'host' => 'localhost', 'dbname' =>'huangsijie', 'username'=>'root', 'password'=>'root' ]; $dsn="{$db['type']}:host={$db['host']};dbname={$db['dbname']}"; try{ $pdo = new PDO($dsn,$db['username'],$db['password']); //echo "连接成功"; }catch (PDOException $e){ die("失败".$e->getMessage()); } ?>
用一个数组将数据库的信息都存起来,这样以后要修改数据库的信息时,就只需要修改数组中对应的信息即可。我们连接数据库用的是pdo,pdo是php来连接数据库的一个抽象层,有了pdo,我们可以用相同的代码去连接不同的数据库,对于程序维护有了极大的遍历,是推荐大家使用的。
然后我们把这个连接数据库的代码单独写在一个php文件中,这样我们在要用到数据库的时候,直接引入该文件即可,也可以降低程序的耦合性。
连接了数据库之后,我们就可以开始操作数据库了,首先我们需要把老师做的数组数据插入到数据库中,是以下代码。
插入movies
实例
$sql = 'insert into `movies` set `mov_id`=:mov_id,`name`=:name,`image`=:image,`detail`=:detail,`cate_id`=:cate_id'; $stmt = $pdo->prepare($sql); foreach ($movies as $k=>$v){ $stmt->bindParam('mov_id',$v['mov_id'],PDO::PARAM_INT); $stmt->bindParam('name',$v['name'],PDO::PARAM_STR); $stmt->bindParam('image',$v['image'],PDO::PARAM_STR); $stmt->bindParam('detail',$v['detail'],PDO::PARAM_STR); $stmt->bindParam('cate_id',$v['cate_id'],PDO::PARAM_INT); if($stmt->execute()){ echo $stmt->rowCount(); }else{ die(print_r($stmt->errorInfo())); } }
插入cates
实例
$sql = 'insert into `cates` set `cate_id`=:cate_id,`name`=:name,`alias`=:alias'; $stmt = $pdo->prepare($sql); foreach ($cates as $k=>$v){ $stmt->bindParam('cate_id',$v['cate_id'],PDO::PARAM_INT); $stmt->bindParam('name',$v['name'],PDO::PARAM_STR); $stmt->bindParam('alias',$v['alias'],PDO::PARAM_STR); if($stmt->execute()){ echo $stmt->rowCount(); }else{ die(print_r($stmt->errorInfo())); } }
插入system
实例
$sql = 'insert into `system` set `sys_id`=:sys_id,`title`=:title,`desc`=:desc,`key`=:key,`copy`=:copy'; $stmt = $pdo->prepare($sql); $stmt->bindParam('sys_id',$system['sys_id'],PDO::PARAM_INT); $stmt->bindParam('title',$system['title'],PDO::PARAM_STR); $stmt->bindParam('desc',$system['desc'],PDO::PARAM_STR); $stmt->bindParam('key',$system['key'],PDO::PARAM_STR); $stmt->bindParam('copy',$system['copy'],PDO::PARAM_STR); if ($stmt->execute()){ echo 'chegnogn'; }else{ die(print_r($stmt->errorInfo())); }
将数据插入完成后,我们就开始查询数据,然后把数据展示在网址中。html代码中的php代码不需要修改,我们只需要把各个数据从数据库中查询出来,然后赋值到相对应的数组变量中即可。网页就能正常显示数据了。
实例
<?php //取cates的数据 $sql ='select * from `cates`'; $stmt = $pdo->prepare($sql); if($stmt->execute()){ $cates = $stmt->fetchAll(); }else{ echo '失败'; } //取movies的数据 $sql ='select * from `movies`'; $stmt = $pdo->prepare($sql); if($stmt->execute()){ $movies = $stmt->fetchAll(); }else{ echo '失败'; } //取pl的数据 $sql ='select * from `pl`'; $stmt = $pdo->prepare($sql); if($stmt->execute()){ $pl = $stmt->fetchAll(); }else{ echo '失败'; } ?>
fetchall函数返回的是一个二维数组,刚好我们的html代码中也是用foreach来循环二维数组,所以代码不需要修改。但是实际云心过程中,页面却没有展示任何信息。调试发现是因为if判断语句中,原来的代码是用三个“=”来判断mov_id,三个等于号是判断类型是否相等的,虽然mysql数据库里面,我的mov_id保存的是int类型,但是取出来之后的mov_id是string类型,导致了不相等,所以就没办法正常展示数据。我们把三个等号换成两个等号就正常显示了。
查询system
实例
<?php $sql ='select * from `system`'; $stmt = $pdo->prepare($sql); if($stmt->execute()){ $system = $stmt->fetch(); }else{ echo '失败'; } ?>
system是一个一维数组,然后fetchall返回的是二维数组,所以网站信息没办法正常显示,我们可以用fetch函数,fetch函数返回的是一个一维数组,这样界面就能正常显示了。
底部版权可以新建一个数据表,把公司名保存到数据库中,然后查询出来给代码就行了
实例
<div class="footer"> <?php $sql = 'select * from `footer`'; $stmt = $pdo->prepare($sql); if ($stmt->execute()){ $footer = $stmt->fetchAll(); } ?> <p class="copyright"><?php echo $footer[0]['company'] ?> © 版权所有</p> </div>
如果要用fetchall函数,那么我们就应该选中这个二维数组里面的第一个数组里面的字段才是我们想要的数据。