PHP创建文件夹,使用#ID创建子文件夹并上传默认文件?

时间:2015-03-01 16:55:19

标签: php hosting directory billing

好吧所以我对此有一点想法,但我并不想在不知道自己会怎么做的情况下开始......

我将在我的托管帐户上提供基本的自动托管,用户将检查网站,使用PayPal支付托管包,IPN会执行其操作。我已经到位并且正在工作。但是,如何键入将在付款时自动生成的脚本 - 使用表AUTO_INCREMENT #ID中的NEXT WebDesign_HostingAccounts编号创建文件夹。因此,如果要使用的下一个ID是#0005,则该文件夹将命名为' 0005'然后在该文件夹中自动添加Public_HTML子文件夹并上传Welcome.PHP页面。

我知道这与以下脚本片段有关:

<?php
// Desired folder structure
$structure = './depth1/depth2/depth3/';

// To create the nested structure, the $recursive parameter 
// to mkdir() must be specified.

if (!mkdir($structure, 0777, true)) {
    die('Failed to create folders...');
}
// ...
?>

但是我如何将其添加到MySQL Query中以检查下一个ID然后上传欢迎页面?

任何基本脚本都会有很大帮助!谢谢!

1 个答案:

答案 0 :(得分:0)

我一直在回到以前的自由职业项目,我从我的经历中发现这是一个不好的做法。

让我们先跳过public_html和Welcome.php部分......

这是&#34;场景&#34;部分

您要做的是:

  1. PHP首先(通过尝试确定下一个AUTO_INCREMENT ID并根据此&#34创建一个文件夹;下一个&#34; auto_increment ID)
  2. 然后在MySQL数据库中执行INSERT命令。
  3. 现在问题是:如果您有2个客户并同时请求相同的请求怎么办?

      

    客户端1期望下一个auto_increment ID为2

         

    客户端2还期望下一个auto_increment ID为2(不是3,因为数据库中还没有 2 作为主ID,所以它也应该得到的 2 )。

    史诗部分是,如果客户2首先完成其请求。我非常确定客户端1也将很快完成其过程,并且它将尝试创建基于AUTO_INCREMENT ID的文件夹,但是已经存在基于AUTO_INCREMENT ID的现有文件夹。有冗余部分。史诗,失败。

    这是主赛事,&#34;解决方案&#34;

    让我们以另一种方式做到这一点,

    1. 你在MySQL数据库中执行INSERT命令,我建议你使用基于事务的进程。
    2. 然后,PHP将创建一个文件夹,其名称基于最近插入的行中生成的AUTO_INCREMENT ID。
    3.   

      到底是什么?如何从最近插入的行中获取AUTO_INCREMENT ID?&#34;

           

      使用LAST_INSERT_ID(),这是MySQL中的一个内置函数,用于从最后一个插入某一行的表中获取最后插入的行(我猜)的AUTO_INCREMENT ID。   现在这里是关于这个LAST_INSERT_ID()事情的阅读部分:

        

      如果其他客户也在该表中插入了一行,是否会发生冲突?

           

      不,因为每个客户都有自己独特的会话。这意味着它只返回当前客户端的最后一个插入行的自动增量ID,而不是全局引用。 (Hooray for MySQL引擎!)

      多插入查询警告

      LAST_INSERT_ID()返回第一个插入行的ID,如果您正考虑使用这样的多插入查询:

      INSERT INTO mytable(name, age)
      VALUES
          ("Mark Hernandez", 25),
          ("Allen Linatoc", 20)
      ;
      

      它只会返回您在多插入查询中指定的第一个行的插入ID。

      您可以使用php mysql_insert_id更快地完成此操作。 我不知道你正在使用什么数据库抽象/扩展(PDO,MySQL,MySQLi),但这里是PHP原生mysql扩展的一个例子:http://php.net/manual/en/function.mysql-insert-id.php < / p>

      在一天结束时,总是最好参考文档以获得您需要的任何说明。

      无论如何,你的部分说:

        

      然后在该文件夹中自动添加Public_HTML子文件夹并上传Welcome.PHP页面。

      • 我想welcome.php文件应该是你服务的工作;)
      • 的public_html?记下chmod的东西,你知道文件系统的权限。安全应始终是第一位的。 文件系统权限只是另一个主题。你需要提出另一个问题。

      我希望我能帮助你解决问题。 现在让我们将更正传递给专家^ _ ^

      祝你有个美好的一天!