-1

我正在使用 PHP 创建一个文件,但我无法在应用程序的每次执行中创建一个新文件。我正在使用数据库生成 XML 文件。我希望在每次执行代码时都有一个新文件,我该怎么做?

这是我的代码:

<?php
$config['mysql_host'] = "localhost";
$config['mysql_user'] = "root";
$config['mysql_pass'] = "root";
$config['db_name']    = "dcu";
$config['table_name'] = "readingsThreePhase";
//$config['table_name1'] = "miosD1";

mysql_connect($config['mysql_host'],$config['mysql_user'],$config['mysql_pass']);

@mysql_select_db($config['db_name']) or die( "Unable to select database");

function writeMsg()
{
//echo "Hello world!";
$xml          = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
$root_element = $config['table_name']."D1"; 
$xml         .= "<$root_element>";

$sql = "SELECT * FROM dcu.readingsThreePhase where meterId=3 order by recordTime DESC limit 1";

$result = mysql_query($sql);
if (!$result) {
    die('Invalid query: ' . mysql_error());
}

if(mysql_num_rows($result)>0)
{
   while($result_array = mysql_fetch_assoc($result))
   {
      //$xml .= "<".$config['table_name'].">\n";
      $xml .= "<".$config['miosD1'].">\n";


      foreach($result_array as $key => $value)
      {


            if($value==NULL)
           {
            continue;
            } 

         $xml .= "<$key>";


           $xml .= "$value";


         $xml .= "</$key>\n";
      }

  $xml.="</".$config['miosD1'].">";
   }
}

$xml .= "</$root_element>";
header ("Content-Type:text/xml");

echo $xml;

$file=fopen("xmlfilefirst.xml","a");

fwrite($file,$xml);
fclose($file);
}

writeMsg();


$xml          = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
$root_element = $config['table_name']."s"; 
$xml         .= "<$root_element>";

$sql = "SELECT * FROM dcu.readingsThreePhase where meterId=3 order by recordTime DESC limit 1";

$result = mysql_query($sql);
if (!$result) {
    die('Invalid query: ' . mysql_error());
}

if(mysql_num_rows($result)>0)
{
   while($result_array = mysql_fetch_assoc($result))
   {
      $xml .= "<".$config['table_name'].">\n";


      foreach($result_array as $key => $value)
      {


            if($value==NULL)
           {
            continue;
            } 

         $xml .= "<$key>";


           $xml .= "$value";


         $xml .= "</$key>\n";
      }

      $xml.="</".$config['table_name'].">";
   }
}

$xml .= "</$root_element>";
header ("Content-Type:text/xml");

echo $xml;

$file=fopen("xmlfilefirst.xml","a");

fwrite($file,$xml);
fclose($file);

?>  
4

2 回答 2

1

要每次都创建一个新文件,您需要一种生成唯一文件名的方法。您可以使用某种乱码来创建此名称,例如:

do {
    $filename = 'my_file_' . substr(md5(time( ), 0, 8 ) . '.xml';
} while( file_exists( $filename ) );

或者,您可以尝试使用某种数字命名约定(“myfile1.xml”、“myfile2.xml”、“myfile3.xml”等)。这意味着获取当前目录的列表。如果没有文件,则从 1 开始。否则,从文件数 + 1 开始,并以此命名您的文件。

另请参阅fopen的文档。如果指定的文件名不存在,大多数模式将尝试创建一个文件,所以只需要一个唯一的文件名就可以了。

于 2013-09-12T14:48:43.657 回答
1

利用file_put_contents

该函数等同于依次调用 fopen()、fwrite() 和 fclose() 将数据写入文件。如果文件名不存在,则创建文件。否则,现有文件将被覆盖,除非设置了 FILE_APPEND 标志。

于 2013-09-12T14:47:33.497 回答