Blogger Information
Blog 14
fans 1
comment 0
visits 11713
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
2019.09.25作业 PHP读取MySQL数据库中的数据,写入页面
Léon的博客
Original
912 people have browsed it

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';

运行实例 »

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


Correction status:qualified

Teacher's comments:这是很久之前的作业了, 近期的写了吗?
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post