【问题标题】:Create a file according to the value in databsse根据数据库中的值创建文件
【发布时间】:2019-12-13 12:55:48
【问题描述】:

我知道如何从 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);

【问题讨论】:

标签: php mysql rename filenames


【解决方案1】:

我将在这个例子中使用PDO connection

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

表名:设置

+----+---------+---------------------+
| 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);
}

但在你使用它之前,请查看Hacking using “rename()” of PHP

【讨论】:

  • 您必须确保数据库中的值可以安全地用于文件名/文件路径。
  • 我知道,我就是这样把链接放在那里的。他必须做一些事情来防止 xss 或其他事情
  • 我可以创建新文件吗?我不想重命名文件,我想创建一个新文件
  • 这是另一个问题。
  • 我更新了答案。看看也许这会对你有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-18
  • 1970-01-01
  • 2018-10-28
相关资源
最近更新 更多