问:img目录下有以年月日命名的文件夹,每个文件夹下又有一张图片,写个php程序,将文件夹下的图片直接保存在img目录,并以年月日命名.
可以使用PHP的文件操作函数来实现这个任务。具体步骤如下:
- 使用
scandir()函数获取img目录下的所有文件夹。 - 遍历每个文件夹,并判断是否为以数字命名的文件夹。
- 如果是数字命名的文件夹,则使用
glob()函数获取文件夹内的图片路径。 - 将图片从原路径复制到img目录下,并以年月日命名。
下面是一个示例代码:
<?php
$img_dir = 'img'; // 目标文件夹
$dirs = scandir($img_dir); // 获取目标文件夹下的所有文件夹
foreach ($dirs as $dir) {
// 判断是否为数字命名的文件夹
if (preg_match('/^[0-9]+$/', $dir)) {
$files = glob($img_dir . '/' . $dir . '/*.jpg'); // 获取文件夹内的jpg文件
foreach ($files as $file) {
// 将图片保存到img目录下,并以年月日命名
$date = date('Ymd', strtotime($dir));
$new_path = $img_dir . '/' . $date . '.jpg';
copy($file, $new_path);
}
}
}
?>
问:有个Json 格式如下 ,请写个php程序,循环这个json,将相关字段存入数据库中。
[
{
"images": [
{
"startdate": "20220810",
"fullstartdate": "202208101600",
"enddate": "20220811",
"url": "/th?id=OHR.MtTsubakuro_ZH-CN0305525340_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp",
"urlbase": "/th?id=OHR.MtTsubakuro_ZH-CN0305525340",
"copyright": "日本长野县安昙野附近的燕岳山 (© Joshua Hawley/Getty Images)",
"title": "如果可以的话,请拥抱一座山吧"
}
]
}
]
可以使用 PHP 内置的 json_decode 函数将 JSON 字符串转换为 PHP 数组,然后遍历数组并将需要存入数据库的字段取出来插入数据库中。
以下是一个简单的代码示例:
<?php
// 连接数据库
$host = 'localhost';
$username = 'your_username';
$password = 'your_password';
$dbname = 'your_database';
$conn = mysqli_connect($host, $username, $password, $dbname);
// 检查连接是否成功
if (!$conn) {
die('Connection failed: ' . mysqli_connect_error());
}
// 解析 JSON
$json_str = '[{"images":[{"startdate":"20220810","fullstartdate":"202208101600","enddate":"20220811","url":"/th?id=OHR.MtTsubakuro_ZH-CN0305525340_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp","urlbase":"/th?id=OHR.MtTsubakuro_ZH-CN0305525340","copyright":"日本长野县安昙野附近的燕岳山 (© Joshua Hawley/Getty Images)","title":"如果可以的话,请拥抱一座山吧"}]}]';
$data = json_decode($json_str, true);
// 循环遍历数组
foreach ($data as $item) {
foreach ($item['images'] as $image) {
// 提取需要存入数据库的字段
$startdate = $image['startdate'];
$fullstartdate = $image['fullstartdate'];
$enddate = $image['enddate'];
$url = $image['url'];
$urlbase = $image['urlbase'];
$title = $image['title'];
$copyright = $image['copyright'];
// 构造 SQL 插入语句
$sql = "INSERT INTO images (startdate, fullstartdate, enddate, url, urlbase, title, copyright)
VALUES ('$startdate', '$fullstartdate', '$enddate', '$url', '$urlbase', '$title', '$copyright')";
// 执行 SQL 语句
if (mysqli_query($conn, $sql)) {
echo "New record inserted successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
}
}
// 关闭数据库连接
mysqli_close($conn);
?>
在上述代码中,将 JSON 字符串 $json_str 解析为 PHP 数组 $data,然后逐层遍历数组 $data 和 $item['images'],提取需要存入数据库的字段,并构造 SQL 插入语句 $sql,最后通过 mysqli_query 函数执行插入操作。
需要注意的是,以上示例代码并没有进行任何安全性检查和防范 SQL 注入攻击的措施,请根据实际情况加以完善。
问:根据上述Json 格式 ,为我创建mysql表结构,存储相关字段。
根据给出的 JSON 格式,可以设计以下 MySQL 表结构来存储相关字段:
CREATE TABLE images (
id INT AUTO_INCREMENT PRIMARY KEY,
startdate VARCHAR(8) NOT NULL,
fullstartdate VARCHAR(12) NOT NULL,
enddate VARCHAR(8) NOT NULL,
url VARCHAR(255) NOT NULL,
urlbase VARCHAR(255) NOT NULL,
copyright VARCHAR(255) NOT NULL,
title VARCHAR(255) NOT NULL
);
该表包含以下字段:
id:自增长的 IDstartdate:图片开始时间,类型为 VARCHAR,长度为 8fullstartdate:完整的图片开始时间,类型为 VARCHAR,长度为 12enddate:图片结束时间,类型为 VARCHAR,长度为 8url:图片的 URL,类型为 VARCHAR,长度为 255urlbase:图片的基本 URL,类型为 VARCHAR,长度为 255copyright:图片版权信息,类型为 VARCHAR,长度为 255title:图片标题,类型为 VARCHAR,长度为 255
注意,如果需要存储多个图片,则需要增加一个外部表来关联图片和其他实体。此处只提供了单张图片数据的表结构。
留下评论