博客列表 >2019.09.25作业 PHP读取MySQL数据库中的数据,写入页面

2019.09.25作业 PHP读取MySQL数据库中的数据,写入页面

Léon的博客
Léon的博客原创
2019年10月14日 11:39:33913浏览

PHP使用MySQL数据库有以下几步:

1、连接数据库

    使用PDO连接数据库其实就是创建一个PDO对象。

    $pdo=new PDO($dsn(dbtype:host='  ';dbname='  '),$username,$password);

    

2、创建SQL语句模板

    创建一个字符串,字符串中包含需要的SQL语句,例如:

    插入数据

    $sql = 'INSERT INTO `表名` SET `字段1`= :占位符1, `字段2`=:占位符2, `字段3`=:占位符3, ...;

    删除数据

    $sql = 'DELETE FROM  `表名`  WHERE `条件字段`=:条件占位符';

    修改数据

    $sql = 'UPDATE  `表名` SET `字段1`= :占位符1, `字段2`= :占位符2,... WHERE `条件字段`=:条件占位符';

    查询数据:

    $sql = 'SELECT * FROM  `表名`  WHERE `条件字段`=:条件占位符';

3、创建SQL语句对象,也称为创建预处理对象

    使用prepare()方法创建一个PDOStatement PDO预处理对象,例如:

    $stmt = $pdo->prepare($sql);
4、将变量绑定到SQL语句模板的命名占位符上

    当SQL语句模板中含有占位符时,需用bindParam()函数将参数绑定到SQL语句模板上。

    bindParam(占位符,变量,预定义常量);

    常用的预定义常量:

    PDO::PARAM_INT: 整数类型

    PDO::PARAM_STR: 字符串类型

    PDO::FETCH_ASSOC: 获取结果集中的关联部分

    例如:

    $stmt->bindParam('占位符', $变量, PDO::PARAM_INT);

5、执行SQL操作

    使用execute()函数执行SQL操作,例如:

    $stmt->execute();

    当查询需要获取数据时,可以用fetch()或fetchAll()函数。

    fetch获取一行数据,返回一个一维数组,例如:

    while ($movie = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo '<pre>' . print_r($movie, true);
    }

    fetchAll获取所有数据,返回一个二维数组,例如:

    $movies = $stmt->fetchAll(PDO::FETCH_ASSOC);

6. 销毁pdo, 关闭连接
    $pdo = null;   // unset($pdo) 等价,或者不写,当PHP页面关闭时,PDO对象自动销毁。

以下是本次作业的代码:

connect.php

实例

<?php 
// 本文件作用为连接数据库
// 数据库PDO对象
// $pdo=new PDO($dsn(dbtype:host='';dbname=''),$username,$password);
// 1、创建一个数组保存连接数据库的参数
$db=[
    'type'=>'mysql',//连接数据库的类型
    'host'=>'127.0.0.1',//数据库主机地址
    'dbname'=>'movie',//数据库名称
    'username'=>'root',//登录名
    'password'=>'root'//登录密码
];
// 2、创建pdo对象的参数dsn
$dsn = "{$db['type']}:host={$db['host']};dbname={$db['dbname']}";

// 3、创建pdo对象,连接数据库
try{
    $pdo= new PDO($dsn,$db['username'],$db['password']);
}
catch(PDOException $e){
    die('Connection Failed: ' . $e->getMessage());
}
?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

header.php

实例

<?php
// 连接数据库取出数据
// 1、连接数据库
require __DIR__.'/connect.php';
// 2、创建SQL语句模板
$sql="SELECT * FROM movies";
$stmt=$pdo->prepare($sql);
$stmt->execute();
$movies=$stmt->fetchall();
// var_dump($movies);
$sql="SELECT * FROM cates";
$stmt=$pdo->prepare($sql);
$stmt->execute();
$cates=$stmt->fetchall();
// var_dump($cates);
$sql="SELECT * FROM systems";
$stmt=$pdo->prepare($sql);
$stmt->execute();
$system = $stmt->fetch(PDO::FETCH_ASSOC);
// var_dump($system);
$sql="SELECT * FROM comments";
$stmt=$pdo->prepare($sql);
$stmt->execute();
$comments = $stmt->fetchall();
// var_dump($system);
?>
<!-- 网站公共头部 -->
<!DOCTYPE html>
<html lang="en">

<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 class="header">
        <ul class="nav">
            <li><a href="index.php">首页</a></li>
            <!-- 使用foreach遍历数组$cates,将电影的分类ID写入URL中 -->
            <!-- 先写一个<li>标签里面包含一个<a>标签,<a>标签中的href为各类电影的URL地址 -->
            <!-- <?php
                    foreach ($cates as  $cate) {
                        echo '<li>';
                        echo '<a href="list.php?cate_id="';
                        echo $cate['cate_id'] . '>';
                        echo $cate['alias'] . '</a>';
                        echo '</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; ?>
            <!-- 这里endforeach;相当于 }  -->

        </ul>
    </div>

运行实例 »

点击 "运行实例" 按钮查看在线实例

footer.php

实例

<!--底部版权-->
<div class="footer">
	<p class="copyright"><?php echo $system['copy']; ?> © 版权所有</p>
</div>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

index.php

实例

<?php
require_once __DIR__ . '/inc/header.php';

foreach ($cates as $cate) {
    echo "<h2>{$cate['alias']}</h2>";
    echo '<ol>';
    // 遍历影$movies,输出各个电影的名字
    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>';
}
require_once __DIR__ . '/inc/footer.php';

运行实例 »

点击 "运行实例" 按钮查看在线实例

list.php

实例

<?php
// 1、加载公共头部文件
require_once __DIR__ . '/inc/header.php';
// 2、从$_GET中获取cate_id,如果$_GET不写下标,则获取整个$_GET数组,写下标则获取下标对应的值
$cate_id = $_GET['cate_id'];
// 3、此时$cate_id是一个字符串,需用intval函数将其转为int型
$cate_id = intval($cate_id);
// 4、从$cates数组中取出对应$cate_id值得系列名称,写入标题
foreach ($cates as  $cate) {
    $cate['cate_id'] = intval($cate['cate_id']);
    if ($cate['cate_id'] === $cate_id) {
        echo "<h2>{$cate['alias']}</h2>";
        echo "<ol>";
        // 将$movies中对应$cate['cate_id']的电影名写入列表
        foreach ($movies as $movie) {
            $movie['cate_id'] = intval($movie['cate_id']);
            if($movie['cate_id']===$cate_id)
            {
                echo "<li><a href='detail.php?mov_id={$movie['mov_id']}'>{$movie['name']}</a></li>";
            }
        }
        echo "</ol>";
    }
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

detail.php

实例

<?php
// 加载公共头部
include __DIR__ . '/inc/header.php';

$mov_id = intval($_GET['mov_id']);
// 复制list.php模板直接修改
foreach ($movies as $movie) {
    $movie['mov_id'] = intval($movie['mov_id']);
    if ($movie['mov_id'] === $mov_id) {
        echo "<h3>{$movie['name']}</h3>";
        echo '<img src="/images/' . $movie['image'] . '" alt="'.$movie['name'].'" width="300">';
        echo "<p style='text-indent: 2em'>{$movie['detail']}</p>";
    }
};
// 添加评论

// 将评论内容写入下方表格
echo '<h4>评论</h4>';
echo '<table>';
echo '<tr><th>用户昵称</th><th>评论内容</th></tr>';
foreach ($comments as $comment) {
    $comment['mov_id']  = intval($comment['mov_id'] );
    if ($comment['mov_id'] === $mov_id) {
        // 在表格中输入评论人和评论内容
        echo "<tr><td>{$comment['user_name']}</td><td>{$comment['content']}</td></tr>";
    }
}
echo '</table>';

// 加载公共底部
include __DIR__ . '/inc/footer.php';

运行实例 »

点击 "运行实例" 按钮查看在线实例


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议