最近做个php项目,需要读取txt 文本文件中的关键词字段,并把数据库中含有关键词字段的记录进行更新操作(实际更新video表中的时间和hits字段)。具体txt的关键字段内容如下(关键词字段每行一个):
21610670
15119314
21144778
6079856
9924015
1671731
22130903
经过几番调试,具体实现功能的php代码如下:
<?php
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";
// 创建数据库连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接是否成功
if ($conn->connect_error) {
die("连接失败:" . $conn->connect_error);
}
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['keywords_file'])) {
// 获取上传文件信息
$file = $_FILES['keywords_file'];
// 检查文件上传是否成功
if ($file['error'] === UPLOAD_ERR_OK) {
// 读取上传的关键词文本文件
$keywords = file($file['tmp_name'], FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
if (!empty($keywords)) {
// 遍历关键词数组
foreach ($keywords as $keyword) {
$keyword = trim($keyword);
// 构建查询语句
$sql = "SELECT * FROM video WHERE vid LIKE '%" . $conn->real_escape_string($keyword) . "%'";
// 执行查询
$result = $conn->query($sql);
// 检查是否找到匹配的记录
if ($result->num_rows > 0) {
echo "关键词 " . $keyword . " 的匹配记录已找到。<br>";
// 更新记录的时间、show字段
$updateSql = "UPDATE video SET time = '2030-01-01', show = 0 WHERE vid LIKE '%" . $conn->real_escape_string($keyword) . "%'";
$conn->query($updateSql);
echo "关键词 " . $keyword . " 的记录已更新。<br><br>";
} else {
echo "未找到关键词 " . $keyword . " 的匹配记录。<br><br>";
}
}
} else {
echo "关键词文件为空。";
}
} else {
echo "文件上传失败。";
}
}
?>
<!-- HTML表单 -->
<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="keywords_file">
<input type="submit" value="上传文件">
</form>