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';点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号