首页 > 解决方案 > 根据databsse中的值创建文件

问题描述

我知道如何从 php 代码创建一个 php 文件。但我想根据从数据库中获取的值重命名文件。例如,如果值为 Blue,我希望文件名为 blue.php。我不知道该怎么做。

$filename = "blue.php"; //file i want to rename
$ourFileName = $filename;
$ourFileHandle = fopen($ourFileName, 'w');
$written = "
    <html>
    <body>
    <?php
    echo \"I like the color {$row['color']}!!!!\"; //value that i want the file name to be based on
    </body>
    </html>
    ";

fwrite($ourFileHandle, $written);
fclose($ourFileHandle);

标签: phpmysqlrenamefilenames

解决方案


我将用于此示例PDO 连接

假设您在数据库中有一个表,就像这样。

表名:设置

+----+---------+---------------------+
| id | name    | property            |
+----+---------+---------------------+
|  1 | color   | red                 |
+----+---------+---------------------+

创建文件

当您想使用新名称创建新文件时。您只需要row[id=1]在数据库中进行编辑。

首先我们需要编辑row[id=1]以创建一个新的文件名。

<?php
require_once 'connection.php';

$NewColor = 'green';

$UpdateDataBase = $conn->prepare("UPDATE settings SET property = ? WHERE id = 1");
$UpdateDataBase->execute([$NewColor]);

我们在数据库中更改property了行ID = 1。从redgreen

现在我们需要使用fopen()fclose()

我们现在green要从我们的数据库中获取,以便创建新文件。

<?php
require_once 'connection.php';

// We gonna take a row from database where id = 1. Because that ID has our information.
$NewFileName  =  $conn->prepare("SELECT * FROM settings WHERE id = 1 LIMIT 1")
$NewFileName->execute();

// Now we will open foreach loop.
foreach($NewFileName->fetchAll() as $row){
   $NewFile = 'path/to/the/file/'.$row['property'].'.php';

  // now we gonna use fopen()
  fopen($NewFile, 'w');
  fclose($NewFile);
}

重新命名文件

现在我们要使用rename()

<?php
require_once 'connection.php';

$oldfile = 'path/to/the/file/red.php';

$RenameFile= $conn->prepare("SELECT * FROM settings WHERE id = 1 LIMIT 1");
$RenameFile->execute();
foreach ($RenameFile->fetchAll as $row){
  $newfile = 'path/to/the/file/'.$row['property'].'.php';

  // Now we gonna use rename()
  rename($oldfile, $newfile);
}

但在你使用它之前,请检查一下使用 PHP 的“rename()”进行黑客攻击


推荐阅读