关于PHP学习

用PHP写一个简单的博客文章功能,通常需要结合数据库存储文章数据,并通过PHP处理数据的增删改查。以下是一个基础的实现思路和示例代码:

一、核心功能设计

  1. 数据库设计(以MySQL为例):存储文章标题、内容、发布时间等信息

  2. 文章列表页:展示所有博客文章的标题和发布时间

  3. 文章详情页:显示单篇文章的完整内容

  4. 简单的发布功能(可选):添加新文章

二、数据库表设计

先创建一个 articles 表,用于存储文章数据:

CREATE TABLE articles (

id INT PRIMARY KEY AUTO_INCREMENT,

title VARCHAR(255) NOT NULL, -- 文章标题

content TEXT NOT NULL, -- 文章内容

created_at DATETIME DEFAULT CURRENT_TIMESTAMP -- 发布时间

);

三、PHP代码实现(示例)

  1. 数据库连接配置(config.php)

<?php

$host = 'localhost'; // 数据库主机

$dbname = 'blog'; // 数据库名

$username = 'root'; // 数据库用户名

$password = ''; // 数据库密码

// 连接数据库

try {

pdo = new PDO("mysql:host=host;dbname=dbname;charset=utf8", username, $password);

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

} catch (PDOException $e) {

die("数据库连接失败: " . $e->getMessage());

}

?>

  1. 文章列表页(index.php)

<?php include 'config.php'; ?>

<!DOCTYPE html>

<html>

<head>

<title>我的博客</title>

<meta charset="utf-8">

</head>

<body>

<h1>博客文章列表</h1>

<a href="post.php">发布新文章</a>

<hr>

<?php

// 查询所有文章(按发布时间倒序)

stmt = pdo->query("SELECT * FROM articles ORDER BY created_at DESC");

articles = stmt->fetchAll(PDO::FETCH_ASSOC);

if (count($articles) > 0) {

foreach (articles as article) {

?>

<div>

<h2><a href="detail.php?id=<?= article\['id'\] ?\>"\>\article'title') ?></a></h2>

<p>发布时间: <?= $article'created_at' ?></p>

<hr>

</div>

<?php

}

} else {

echo "<p>暂无文章,快去发布第一篇吧!</p>";

}

?>

</body>

</html>

  1. 文章详情页(detail.php)

<?php

include 'config.php';

// 获取URL中的文章ID

id = isset(_GET'id') ? (int)$_GET'id' : 0;

// 查询单篇文章

stmt = pdo->prepare("SELECT * FROM articles WHERE id = :id");

stmt-\>bindParam(':id', id);

$stmt->execute();

article = stmt->fetch(PDO::FETCH_ASSOC);

if (!$article) {

die("文章不存在!");

}

?>

<!DOCTYPE html>

<html>

<head>

<title><?= htmlspecialchars($article'title') ?></title>

<meta charset="utf-8">

</head>

<body>

<a href="index.php">返回列表</a>

<h1><?= htmlspecialchars($article'title') ?></h1>

<p>发布时间: <?= $article'created_at' ?></p>

<hr>

<div><?= nl2br(htmlspecialchars($article'content')) ?></div> <!-- nl2br转换换行符 -->

</body>

</html>

  1. 发布文章页(post.php)

<?php

include 'config.php';

if ($_SERVER'REQUEST_METHOD' === 'POST') {

// 获取表单提交的数据

title = _POST'title' ?? '';

content = _POST'content' ?? '';

// 简单验证

if (empty(title) \|\| empty(content)) {

$error = "标题和内容不能为空!";

} else {

// 插入数据库

stmt = pdo->prepare("INSERT INTO articles (title, content) VALUES (:title, :content)");

stmt-\>bindParam(':title', title);

stmt-\>bindParam(':content', content);

$stmt->execute();

// 跳转回列表页

header('Location: index.php');

exit;

}

}

?>

<!DOCTYPE html>

<html>

<head>

<title>发布文章</title>

<meta charset="utf-8">

</head>

<body>

<h1>发布新文章</h1>

<?php if (isset(error)) echo "\

error</p>"; ?>

<form method="post">

<div>

<label>标题:</label><br>

<input type="text" name="title" style="width: 500px;">

</div>

<br>

<div>

<label>内容:</label><br>

<textarea name="content" rows="10" cols="80"></textarea>

</div>

<br>

<button type="submit">发布</button>

<a href="index.php">取消</a>

</form>

</body>

</html>

四、使用说明

  1. 先在MySQL中创建名为 blog 的数据库(或修改 config.php 中的数据库名)

  2. 执行上述SQL语句创建 articles 表

  3. 将所有文件放在PHP运行环境(如XAMPP、WAMP)的网站根目录下

  4. 访问 index.php 即可查看博客列表,点击"发布新文章"添加内容

这个示例实现了最基础的博客功能,实际使用中还可以扩展:添加用户登录、文章编辑/删除、评论功能、富文本编辑器等。

相关推荐
海宇AI3 分钟前
零信任架构实战:基于海宇行驶OCR证识别构建自动化租车车队行驶证电子档案网关
运维·人工智能·架构·自动化·1024程序员节
北京中科新远科技24 分钟前
高速接口兼容排查实战:OSFP、QSFP112与QSFP56如何逐层验证
linux·运维·网络
Ruiery29 分钟前
Linux 6.6内核 CPU 深度解析(零):x86 内核引导协议 — 从 bootloader 到 main()
linux·运维·服务器
Ruiery30 分钟前
Linux 6.6内核 CPU 深度解析(十六):x86 保护机制 — 从 ring 到页表的权限防线
linux·运维·服务器
贵州诚鑫致达科技有限公司1 小时前
PHP两个9.2分RCE漏洞,速查版本
服务器·php·1024程序员节
不老刘1 小时前
异构双 Agent 协同:构建无人值守的长任务自动化研发流水线
运维·人工智能·自动化·ai编程·1024程序员节
可乐_不渴1 小时前
【Linux】 项目自动化构建工具makefile&& 版本管理Git&&第一个程序
linux·git·自动化·1024程序员节
Profile排查笔记2 小时前
浏览器指纹逆向怎么分析:从网络请求追踪到 JavaScript 采集链
前端·人工智能·后端·自动化
织码weavecodes2 小时前
医疗、零售、物业培训怎么落地?织码在线教育系统的三类行业案例
运维·服务器·零售
智能运维指南2 小时前
企业运维监控平台哪家好?2026年五大全栈可观测方案对比与选型推荐
大数据·运维·人工智能