本文目录导读:

在 PHP 中实现“代码收藏”功能,通常有几种不同的理解方式,根据你的需求,我为你整理了最常见的三种场景及对应的实现方案:
在你的项目(Web应用)中,为用户提供“收藏”功能
这是最常见的业务需求,比如收藏文章、商品等,需要数据库支持。
数据库表设计
-- 收藏表 CREATE TABLE `favorites` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL COMMENT '用户ID', `target_type` varchar(20) NOT NULL COMMENT '类型:article/product', `target_id` int(11) NOT NULL COMMENT '目标ID', `created_at` timestamp DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `unique_fav` (`user_id`, `target_type`, `target_id`) -- 防止重复收藏 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
PHP 添加/取消收藏接口
<?php
// favorite.php
session_start();
require 'db.php'; // 数据库连接
$user_id = $_SESSION['user_id'];
$target_id = (int)$_POST['target_id'];
$target_type = $_POST['target_type'];
// 检查是否已收藏
$check = $pdo->prepare("SELECT id FROM favorites WHERE user_id = ? AND target_type = ? AND target_id = ?");
$check->execute([$user_id, $target_type, $target_id]);
if ($check->fetch()) {
// 已收藏:取消收藏
$delete = $pdo->prepare("DELETE FROM favorites WHERE user_id = ? AND target_type = ? AND target_id = ?");
$delete->execute([$user_id, $target_type, $target_id]);
echo json_encode(['status' => 'unfavorited']);
} else {
// 未收藏:添加收藏
$insert = $pdo->prepare("INSERT INTO favorites (user_id, target_type, target_id) VALUES (?, ?, ?)");
$insert->execute([$user_id, $target_type, $target_id]);
echo json_encode(['status' => 'favorited']);
}
?>
前端 AJAX 调用
// 前端按钮点击
document.querySelector('.fav-btn').addEventListener('click', function() {
fetch('favorite.php', {
method: 'POST',
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
body: 'target_id=123&target_type=article'
})
.then(res => res.json())
.then(data => {
// 根据 data.status 切换按钮状态
});
});
在本地代码中,将某段代码“收藏”到自己的小工具里
如果你是想写一个个人代码片段管理器,可以用 JSON 或 SQLite 存储。
PHP 代码片段管理器(SQLite版)
<?php
// code_saver.php
class CodeSaver {
private $db;
public function __construct() {
$this->db = new PDO('sqlite:code_snippets.db');
$this->db->exec("CREATE TABLE IF NOT EXISTS snippets (
id INTEGER PRIMARY KEY,
title TEXT,
code TEXT,
language TEXT,
created_at DATETIME
)");
}
// 保存代码片段
public function save($title, $code, $language) {
$stmt = $this->db->prepare("INSERT INTO snippets (title, code, language, created_at) VALUES (?,?,?,?)");
return $stmt->execute([$title, $code, $language, date('Y-m-d H:i:s')]);
}
// 获取所有收藏的代码
public function getAll() {
return $this->db->query("SELECT * FROM snippets ORDER BY created_at DESC")->fetchAll(PDO::FETCH_ASSOC);
}
}
// 使用示例
$saver = new CodeSaver();
$saver->save("PHP数据库连接", "mysqli_connect(...)", "php");
$saver->save("JavaScript弹窗", "alert('Hello')", "javascript");
print_r($saver->getAll());
?>
保存 PHP 文件本身(代码文件的备份)
如果你想把一段 PHP 代码保存为 .php 文件存到服务器上:
<?php // save_code_file.php $code = $_POST['code']; // 从表单或编辑器获取 $filename = 'saved_' . time() . '.php'; // 写入文件(确保目录有写权限) file_put_contents($filename, '<?php ' . $code . ' ?>'); echo "代码已保存为: " . $filename; ?>
总结建议
- 如果是 Web 应用功能:使用 场景一(数据库 + AJAX),这是最规范的方式。
- 如果是个人工具:使用 场景二(SQLite/JSON),无需额外安装数据库。
- 如果是简单文件备份:使用 场景三,一行代码搞定。
你可以根据你的具体需求选择适合的实现方式,如果还有其他细节问题(比如登录认证、防SQL注入等),欢迎继续追问!
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播