第一步创建connect.php
内容如下
<?php //测试站 // [HTTP_HOST] => ouyangke.com:9096 // print_r($_SERVER); if( $_SERVER['HTTP_HOST'] == 'ouyangke.com:9096'){ $db = [ 'type' => 'mysql', 'host' => '127.0.0.1', 'dbname' =>'ouyangke', 'username'=>'root', 'password'=>'123456' ]; }else{ // 上线站 $db = [ 'type' => 'mysql', 'host' => '127.0.0.1', 'dbname' =>'zhulaoshi', 'username'=>'root', 'password'=>'123456' ]; } $dsn = $db['type'].':host='.$db['host'].';dbname='.$db['dbname']; try{ $pdo = new PDO($dsn,$db['username'],$db['password']); } catch (PDOException $e) { // echo '数据库报错:' . $e -> getMessage(); //如果没有结束php的话,就会往下继续执行 // exit 停止php的代码 // exit; //输出、停止,两个功能,合二为一 die( $e -> getMessage() ); } ?>
pdo操作数据库基本流程
require __DIR__ . '/connect.php';
// 2. 创建SQL语句模板
$sql = 'SELECT * FROM `movies` WHERE `cate_id` = :cate_id';
// 3. 创建SQL语句对象
$stmt = $pdo->prepare($sql);
// 4. 将变量绑定到SQL语句模板的命名占位符上
$cate_id = 3;
$stmt->bindParam('cate_id', $cate_id, PDO::PARAM_INT);
// 5. 执行SQL操作
$stmt->execute();
// 将结果集中的记录中的字段, 绑定到指定的变量上
$stmt->bindColumn('name', $name);
$stmt->bindColumn('detail', $detail);
while ($stmt->fetch(PDO::FETCH_ASSOC)) {
$detail = mb_substr($detail,0, 20,'utf-8');
echo '片名: ' . $name . '<br>' . '简介: ' . $detail . '...<hr>';
}
// 6. 销毁pdo, 关闭连接
$pdo = null; // unset($pdo) 等价
根据这些步骤我们完成我们这个小项目
第二步找到header.php
代码如下
<?php // 影视剧数组 // $movies = [ // [ // 'mov_id'=>1, // 'name'=>'倚天屠龙记', // 'image'=>'1.jpg', // 'detail'=>'元朝末年,群雄纷起,武林动荡。江湖传闻,得到屠龙刀倚天剑者,可以成为武林至尊,号令天下,莫敢不从。一时间风云四起,引发了武林中对屠龙刀倚天剑的争夺,几段姻缘和孽缘也由此产生。武当派张翠山与天鹰教殷素素… ', // 'cate_id'=>1 // ], // [ // 'mov_id'=>2, // 'name'=>'都挺好', // 'image'=>'2.jpg', // 'detail'=>' 苏母的的突然离世打破了这个家庭外表的平静,意想不到的隐患层层显露,对毫无主见却又自私、小气的苏父的安置和后续生活问题,引发了远在国外的大哥与本城的二哥、小妹三家规律生活的不再。一直被苏母压制的苏父翻… ', // 'cate_id'=>1 // ], // [ // 'mov_id'=>3, // 'name'=>'如果可以这样爱', // 'image'=>'3.jpg', // 'detail'=>'一对已婚男女突然徇情自杀,以为可以结束这一切,却不料悲剧才刚刚开始——他们的爱人,耿墨池和白考儿,同时在葬礼上邂逅。面对同样的背叛他们同时选择报复但又同时爱上彼此,注定饱受打击和折磨。然而他们想真心拥… ', // 'cate_id'=>1 // ], // [ // 'mov_id'=>4, // 'name'=>'复仇者联盟4', // 'image'=>'4.jpg', // 'detail'=>'《复仇者联盟4:终局之战》将是漫威宇宙“无限传奇”(The Infinity Saga)的终结篇,是漫威电影宇宙十年的一个重要节点,结束部分英雄电影的故事,但也将展开新的剧情,呈现新的更为广阔宏大的宇…', // 'cate_id'=>2 // ], // [ // 'mov_id'=>5, // 'name'=>'波西米亚狂想曲', // 'image'=>'5.jpg', // 'detail'=>'弗雷迪·默丘里成名前在机场做行李搬运工。有一天,默丘里毛遂自荐加入杰·泰勒与布莱恩·梅的乐团,恰巧当天原本的主唱辞职,默丘里用自己横跨四个八度的超广音域说服两人,从此开启皇后乐团的摇滚传奇!', // 'cate_id'=>2 // ], // [ // 'mov_id'=>6, // 'name'=>'阿丽塔:战斗天使', // 'image'=>'6.jpg', // 'detail'=>'弗雷迪·默丘里成名前在机场做行李搬运工。有一天,默丘里毛遂自荐加入杰·泰勒与布莱恩·梅的乐团,恰巧当天原本的主唱辞职,默丘里用自己横跨四个八度的超广音域说服两人,从此开启皇后乐团的摇滚传奇!', // 'cate_id'=>2 // ], // [ // 'mov_id'=>7, // 'name'=>'情书', // 'image'=>'7.jpg', // 'detail'=>'***神户某个飘雪的冬日,渡边博子(中山美穗)在前未婚夫藤井树的三周年祭日上又一次悲痛到不能自已。正因为无法抑制住对已逝恋人的思念,渡边博子在其中学同学录里发现“藤井树” 在小樽市读书时的地址时,依循着…', // 'cate_id'=> 3 // ], // [ // 'mov_id'=>8, // 'name'=>'天空之城', // 'image'=>'8.jpg', // 'detail'=>'韩书珍将两个女儿的教育问题和对丈夫的贤内助工作都做得井井有条,在天空之城之中也是备受瞩目的女王,但其实书珍一直隐藏着不为人所知的秘密。李秀林是个充满了关怀和情感丰沛的童话作家,在书珍的引导之下成为了天…', // 'cate_id'=>3 // ], // [ // 'mov_id'=>9, // 'name'=>'龙猫', // 'image'=>'9.jpg', // 'detail'=>'为了方便妻子草壁靖子养病,草壁达郎决定带着两个女儿草壁皋月和草壁米搬到草壁靖子所在疗养院附近的乡下,父女三人入住了一间年久失修的老房子。小姐妹俩很快发现看似平凡无奇的乡下有很多神奇的事物,无人居住的房…', // 'cate_id'=>3 // ], // ]; include __DIR__ . "/connect.php"; $sql = 'SELECT * FROM movies'; $stmt = $pdo -> prepare($sql); if( $stmt->execute()){ $movies = $stmt -> fetchAll(); } // print_r($movies); // // 栏目数组 // $cates = [ // ['cate_id'=>1, 'name'=>'gc', 'alias'=>'国产好剧'], // ['cate_id'=>2, 'name'=>'om', 'alias'=>'欧美猛片'], // ['cate_id'=>3, 'name'=>'rh', 'alias'=>'日韩新片'], // ]; // // 网站的系统设置 // $system = [ // 'sys_id'=>1, // 'title'=>'私人影院', // 'desc'=>'收集全网最新最全的影视资源', // 'key'=>'国产,欧美,日韩', // 'copy'=>'php中文网' // ]; // $messages = [ // [ // 'mov_id' => 1, // 'user' => 'user_1.jpg', // 'time' => '2019/09/12', // 'msg' => '银河以北,吾彦最美' // ], // [ // 'mov_id' => 2, // 'user' => 'user_2.jpg', // 'time' => '2019/09/12', // 'msg' => '你说他为什么单身,因为他是钢铁侠。' // ], // [ // 'mov_id' => 3, // 'user' => 'user_3.jpg', // 'time' => '2019/09/12', // 'msg' => '对不起,我是警察' // ], // [ // 'mov_id' => 1, // 'user' => 'user_3.jpg', // 'time' => '2019/09/12', // 'msg' => '亲,这电影如果打十分我怕你骄傲。所以你只有一分' // ] // ]; // 获取网站配置信息(SEO) $sql = 'SELECT * FROM `system` LIMIT 1'; $stmt = $pdo->prepare($sql); $stmt->execute(); $system = $stmt->fetch(PDO::FETCH_ASSOC); // 获取栏目信息 $sql = 'SELECT `cate_id`,`name`,`alias` FROM `category`'; $stmt = $pdo->prepare($sql); $stmt->execute(); $cates = $stmt->fetchAll(PDO::FETCH_ASSOC); $cate_count = count($cates); // 栏目数量 // 获取影视信息 $sql = 'SELECT `mov_id`,`name`,`image`, `detail`, `cate_id` FROM `movies`'; $stmt = $pdo->prepare($sql); $stmt->execute(); $movies = $stmt->fetchAll(PDO::FETCH_ASSOC); ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="static/css/style.css"> <meta name="description" content="<?php echo $system['desc'] ?>"> <meta name="keywords" content="<?php echo $system['key'] ?>"> <title><?php echo $system['title'] ?></title> </head> <body> <!--头部导航--> <div> <ul> <li><a href="index.php">首页</a></li> <?php foreach ($cates as $cate) : ?> <li><a href="list.php?cate_id=<?php echo $cate['cate_id']; ?>"><?php echo $cate['alias'] ?></a></li> <?php endforeach; ?> </ul> </div> </div>
对了还有footer.php
代码跟上次的项目而言根本没变
<!--底部版权--> <div class="footer"> <p class="copyright"><?php echo $system['copy']; ?>© 版权所有</p> </div> </body> </html>
然后找到我们的首页index.php
<?php include __DIR__ . "/header.php"; foreach ($cates as $cate) { echo "<h2>{$cate['alias']}</h2>"; echo '<ol>'; foreach ($movies as $movie) { if ($cate['cate_id'] === $movie['cate_id']) { echo "<li><a href='detail.php?mov_id=" .$movie['mov_id']. "'>{$movie['name']}</a></li>"; } } echo '</ol>'; } include __DIR__ . '/footer.php'; ?>
然后找到list.php
<?php include __DIR__ . '/header.php'; // 获取栏目ID // 注: 数据表读取的值,都是以字符类型,这里不必再转换 $cate_id = $_GET['cate_id']; foreach ($cates as $cate) { if ($cate['cate_id'] === $cate_id) { echo "<h2>{$cate['alias']}</h2>"; echo '<ol>'; // 遍历该栏目ID对应的影视信息 foreach ($movies as $movie) { if ($cate['cate_id'] === $movie['cate_id']) { echo "<li><a href='detail.php?mov_id=" .$movie['mov_id']. "'>{$movie['name']}</a></li>"; } } echo '</ol>'; }; } include __DIR__ . '/footer.php';
最后找到详情页面
<?php lude __DIR__ . '/header.php'; $mov_id = $_GET['mov_id']; foreach ($movies as $movie) { if ($movie['mov_id'] === $mov_id) { echo "<h3>{$movie['name']}</h3>"; echo '<img src="static/images/'.$movie['image'].'" alt="" width="300">'; echo "<p style='text-indent: 2em'>{$movie['detail']}</p>"; } }; include __DIR__ . '/footer.php'; ?>
运行效果如下
还有数据库由于我是比着老师的视频和文档一点一点扣的把数据库也截图下来好了
可能我太菜了所以从头到尾copy了一遍.也想过举一反三但是bug老是出现.所以最后还是整个克隆版的毕竟克隆版只需要把路径对齐.没那么多幺蛾子.交的很晚主要因为我得跟着老师打一遍.不然对于我来说跟耳旁风一样.