把影視網(wǎng)站,數(shù)據(jù)全部從 數(shù)據(jù)庫(kù)中讀取
1,分類(lèi)
2,詳情
3,底部版權(quán)
首先我們用一個(gè)connect.php把數(shù)據(jù)庫(kù)連接了,然后在文件中把這個(gè)php單獨(dú)引進(jìn)進(jìn)來(lái)。
<?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()); } ?>
用一個(gè)數(shù)組將數(shù)據(jù)庫(kù)的信息都存起來(lái),這樣以后要修改數(shù)據(jù)庫(kù)的信息時(shí),就只需要修改數(shù)組中對(duì)應(yīng)的信息即可。我們連接數(shù)據(jù)庫(kù)用的是pdo,pdo是php來(lái)連接數(shù)據(jù)庫(kù)的一個(gè)抽象層,有了pdo,我們可以用相同的代碼去連接不同的數(shù)據(jù)庫(kù),對(duì)于程序維護(hù)有了極大的遍歷,是推薦大家使用的。
然后我們把這個(gè)連接數(shù)據(jù)庫(kù)的代碼單獨(dú)寫(xiě)在一個(gè)php文件中,這樣我們?cè)谝玫綌?shù)據(jù)庫(kù)的時(shí)候,直接引入該文件即可,也可以降低程序的耦合性。
連接了數(shù)據(jù)庫(kù)之后,我們就可以開(kāi)始操作數(shù)據(jù)庫(kù)了,首先我們需要把老師做的數(shù)組數(shù)據(jù)插入到數(shù)據(jù)庫(kù)中,是以下代碼。
插入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())); }
將數(shù)據(jù)插入完成后,我們就開(kāi)始查詢(xún)數(shù)據(jù),然后把數(shù)據(jù)展示在網(wǎng)址中。html代碼中的php代碼不需要修改,我們只需要把各個(gè)數(shù)據(jù)從數(shù)據(jù)庫(kù)中查詢(xún)出來(lái),然后賦值到相對(duì)應(yīng)的數(shù)組變量中即可。網(wǎng)頁(yè)就能正常顯示數(shù)據(jù)了。
<?php //取cates的數(shù)據(jù) $sql ='select * from `cates`'; $stmt = $pdo->prepare($sql); if($stmt->execute()){ $cates = $stmt->fetchAll(); }else{ echo '失敗'; } //取movies的數(shù)據(jù) $sql ='select * from `movies`'; $stmt = $pdo->prepare($sql); if($stmt->execute()){ $movies = $stmt->fetchAll(); }else{ echo '失敗'; } //取pl的數(shù)據(jù) $sql ='select * from `pl`'; $stmt = $pdo->prepare($sql); if($stmt->execute()){ $pl = $stmt->fetchAll(); }else{ echo '失敗'; } ?>
fetchall函數(shù)返回的是一個(gè)二維數(shù)組,剛好我們的html代碼中也是用foreach來(lái)循環(huán)二維數(shù)組,所以代碼不需要修改。但是實(shí)際云心過(guò)程中,頁(yè)面卻沒(méi)有展示任何信息。調(diào)試發(fā)現(xiàn)是因?yàn)閕f判斷語(yǔ)句中,原來(lái)的代碼是用三個(gè)“=”來(lái)判斷mov_id,三個(gè)等于號(hào)是判斷類(lèi)型是否相等的,雖然mysql數(shù)據(jù)庫(kù)里面,我的mov_id保存的是int類(lèi)型,但是取出來(lái)之后的mov_id是string類(lèi)型,導(dǎo)致了不相等,所以就沒(méi)辦法正常展示數(shù)據(jù)。我們把三個(gè)等號(hào)換成兩個(gè)等號(hào)就正常顯示了。
查詢(xún)system
<?php $sql ='select * from `system`'; $stmt = $pdo->prepare($sql); if($stmt->execute()){ $system = $stmt->fetch(); }else{ echo '失敗'; } ?>
system是一個(gè)一維數(shù)組,然后fetchall返回的是二維數(shù)組,所以網(wǎng)站信息沒(méi)辦法正常顯示,我們可以用fetch函數(shù),fetch函數(shù)返回的是一個(gè)一維數(shù)組,這樣界面就能正常顯示了。
底部版權(quán)可以新建一個(gè)數(shù)據(jù)表,把公司名保存到數(shù)據(jù)庫(kù)中,然后查詢(xún)出來(lái)給代碼就行了
<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'] ?> ? 版權(quán)所有</p> </div>
如果要用fetchall函數(shù),那么我們就應(yīng)該選中這個(gè)二維數(shù)組里面的第一個(gè)數(shù)組里面的字段才是我們想要的數(shù)據(jù)。
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)