博主信息
博文 17
粉丝 0
评论 0
访问量 15663
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
php之PDO实战
ShunPro的博客
原创
970人浏览过

本实战的收获:

通过本PDO的实战手动创建了数据库及数据表;

在php中利用PDO创建与数据库的连接

将数据库中的表读取成php的数组

利用数组的遍历及条件判断对数据进行页面上的应用

熟悉了php语句的调式方法,利用echo或var_dump()输出帮助调试。

需注意文件的目录的设置

本实战目录结构

01目录结构.png

数据库结构

02wz_system.png03wz_cates.png04wz_movies.png

1、连接数据库

拼接数据库信息:数据库类型:host=主机名或IP地址;dbname=数据库名

新建数据库连接:new PDO(数据库信息,username='用户名',password='密码')


<?php
    //<--连接数据库
    $db =[
        'type' => 'mysql',
        'host' => 'html.io',
        'dbname' => 'phpsql',
        'username' => 'root',
        'password' => 'root'
    ];
    //数据库信息拼接
    $dsn = $db['type']. ':host='.$db['host'].';dbname='.$db['dbname'];
    //创建pdo对象
    try{
        $pdo = new PDO($dsn,$db['username'],$db['password']);
    }catch (PDOException $e){
        dir('Connection Failed: '.$e->getMessage());
    };
    //-->连接数据库完成

2、用PDO预处理语句对象方法读取数据库表的数据

新建sql语句模板

创建PDOStatement预处理语句对象 $pdo->prepare($sql)

绑定sql模板语句中的点位符变量 $stmt->bindParam(`字段名`,变量,PDO::数据类型)

执行sql语句 $stmt->execute()

获取查询到的数据 $stmt ->fetch()或fetchall()前面是一维数组,后面是二维数组

将数据库中需要到表通过pdo的方法引入到php的对应数组变量中

<?php
    require __DIR__.'/connect.php';
    //<--读取网站system数据:title,description,keyword
    //创建SQL预处理对象
    $sql = 'SELECT * FROM `wz_system` WHERE `sys_id` =:sys_id ';
    $stmt = $pdo -> prepare($sql);
    $sys_id = 1;
    //绑定占位变量
    $stmt ->bindParam('sys_id',$sys_id,PDO::PARAM_INT);
    //执行SQL语句,$stmt->execute()对SQL语句进行执行,执行成功返回true,失败返回FALSE
    if ($stmt->execute()){
        //$stmt -> fetch()不管你查询到几条数据,它只返回一行数据到一维数组;$stmt -> fetchall()将查询到的所有数据返回到二维数组
        $system = $stmt -> fetch();
//        var_dump($system);
    }else{
        die('<pre>'. print_r($stmt->errorInfo(),true));
    }
    //-->读取网站system数据:title,description,keyword

    //<--读取网站导航分类数据
    $sql = 'SELECT * FROM `wz_cates` ';
    $stmt = $pdo -> prepare($sql);
    if ($stmt ->execute()){
        $cates = $stmt->fetchall();
//        var_dump($cates);
    }else{
        die('<pre>'. print_r($stmt->errorInfo(),true));
    }
    //-->网站导航分类数据读取完毕

    //-->读取视频信息数据
    $sql = 'SELECT * FROM `wz_movies` ';
    $stmt = $pdo -> prepare($sql);
    if ($stmt ->execute()){
        $movies = $stmt->fetchall();
//            var_dump($movies);
    }else{
        die('<pre>'. print_r($stmt->errorInfo(),true));
    }


?>
<!doctype html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <meta name="description" content=<?php echo $system['desc'] ;?>>
    <meta name="keywords" content=<?php echo $system['key'] ;?>>
    <link rel="stylesheet" href="./static/css/style.css">
    <title><?php echo $system['title'] ;?></title>
</head>
<body>
<!--    头部导航区-->
    <div class="header">
        <ul>
            <li><a href="index.php">首页</a></li>
            <?php foreach ($cates as $cate) {?>
                <li><a href="list.php?<?php echo 'cate_id='.$cate['cate_id']?>"><?php echo $cate['alias']?></a></li>

            <?php }?>

        </ul>
    </div>

3、通过遍历数组的方法生成头部导航和index页

首页效果

05index.png

index页代码

<?php
    require __DIR__. "/inc/header.php";
?>
<div class="main">

    <?php foreach ($cates as $cate) {?>
        <h2><a href="list.php?<?php echo 'cate_id='.$cate['cate_id']?>">
                <?php echo ' > '.$cate['alias']?></a>
        </h2>
        <ul>
            <?php foreach ($movies as $movie) {
                if ($cate['cate_id']==$movie['cate_id']){
                    echo '<li><a href="description.php?mov_id='.$movie['mov_id'].'">'.$movie['name'].'</a></li>';
                }
             }?>
        </ul>
    <?php }?>


</div>


<?php require __DIR__. "/inc/footer.php";?>


4、通过get传值方式进行判断,结合数组遍历生成list页与Description页

list页效果

06list.png

list页实现代码

<?php
    require __DIR__. "/inc/header.php";
    $cate_id = $_GET['cate_id'];
?>
<div class="main">

    <?php
        foreach ($cates as $cate) {
            if ($cate_id == $cate['cate_id']) {
                echo '<h2>' . $cate['alias'] . '</h2>';
            }
        }
        echo '<ul>';
            foreach ($movies as $movie) {
                if ($cate_id==$movie['cate_id']){
                    echo '<li><a href="description.php?mov_id='.$movie['mov_id']
                        .'">'.$movie['name'].'</a></li>';
                }
            }
        echo '</ul>';
    ?>
</div>

<?php require __DIR__. "/inc/footer.php";?>

des页效果

07desc.png

Description页代码

<?php
require __DIR__. "/inc/header.php";
$mov_id = $_GET['mov_id'];
$img_path = "./static/images/";
?>
<div class="main">

    <?php
    foreach ($movies as $movie) {
        if ($mov_id == $movie['mov_id']) {
            echo '<h2>' . $movie['name'] . '</h2>';
            echo '<img src="'.$img_path.$movie['image'].'">';
            echo '<p>'.$movie['detail'].'</p>';
        }
    }
    ?>
</div>
<img src="" alt="">
<?php require __DIR__. "/inc/footer.php";?>


批改状态:合格

老师批语:将知识点与实际项目结合起来是最好的学习方法
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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

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