Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP按钮生成CSV时,在CSV文件中附加两次内容_Php_Mysql_Csv - Fatal编程技术网

使用PHP按钮生成CSV时,在CSV文件中附加两次内容

使用PHP按钮生成CSV时,在CSV文件中附加两次内容,php,mysql,csv,Php,Mysql,Csv,这是我生成csv文件的代码。当我点击php按钮生成csv文件时,它是根据数据库中的“类别”列填充的内容。但我这里的问题是,内容在csv文件中填充了两次,如下所示。请帮助我了解我必须修改代码的位置,以便我只能按预期获得一次填充的内容,如下图所示。提前感谢 createcsv.php <?php $servername = "localhost"; $username = "user"; $password = ""; $dbname = "stats"; define("DB_SERVE

这是我生成csv文件的代码。当我点击php按钮生成csv文件时,它是根据数据库中的“类别”列填充的内容。但我这里的问题是,内容在csv文件中填充了两次,如下所示。请帮助我了解我必须修改代码的位置,以便我只能按预期获得一次填充的内容,如下图所示。提前感谢

createcsv.php

<?php

$servername = "localhost";
$username = "user";
$password = "";
$dbname = "stats";

define("DB_SERVER", "localhost");
define("DB_NAME", "stats");
define("DB_USER", "user");
define("DB_PASSWORD", '');

$dbconn = @mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD);
$conn = @mysql_select_db(DB_NAME,$dbconn);


// Create connection
//$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
    echo "DB connection failed";
} 

// Query DB to fetch hit count for each category and in turn create corresponding .csv file
function createCSVFile($type) {
    $msql = "SELECT TRIM(TRAILING '.000000' from UNIX_TIMESTAMP(hitdate)*1000) as unixdate,count from h_stats where category='".$type."' order by unixdate asc";

    $query = mysql_query($msql); 

    $type = str_replace(' ', '', $type);

    $tmp_file = "data/tmp_".$type.".csv";
    $fp = fopen("$tmp_file", "w");

    // Write the query contents to temp file
    while($row = mysql_fetch_array($query))
    {
      fputcsv($fp, $row);

    }
    fclose($fp);

    // Modify the contents of the file as per the high chart input data format
    $fp = fopen("$tmp_file", 'r+');
    rewind($fp);
    $file = "data/".$type.".csv";


    $final = fopen("$file", 'w');

    while($line = fgets($fp)){
        trim($line);
        $line = '['.$line.'],';
        fputs($final,$line);
    }

    // Append var $type and remove the trailing ,
    $final = file_get_contents($file);
    $content = 'var '.$type .'= [' . rtrim($final, ","). ']';
    file_put_contents("$file",$content); 

}

// Query DB to fetch success/failure count for Hits and in turn create corresponding .csv file
function createHitOutcomeCSVFile($type,$category) {
    $sql = "SELECT TRIM(TRAILING '.000000' from UNIX_TIMESTAMP(hitdate)*1000) as unixdate,".$type." from h_stats where category='".$category."' order by unixdate asc";

    $query = mysql_query($sql); 

    $tmp_file = "data/tmp_".$type."_".$category.".csv";
    $fp = fopen("$tmp_file", "w");

    // Write the query contents to temp file
    while($row = mysql_fetch_array($query)){
      fputcsv($fp, $row);
    }
    fclose($fp);

    // Modify the contents of the file as per the high chart input data format
    $fp = fopen("$tmp_file", 'r+');
    rewind($fp);

    $category = str_replace(' ', '', $category);

    $file = "data/".$type."_".$category.".csv";

    $final = fopen("$file", 'w');

    while($line = fgets($fp)){
        trim($line);
        $line = '['.$line.'],';
        fputs($final,$line);
    }

    // Append var $type and remove the trailing ,
    $final = file_get_contents($file);
    $content = 'var '.$type.'_'.$category.'= [' . rtrim($final, ","). ']';
    file_put_contents("$file",$content); 

}
    // Invoke function to create the Hits.csv file
    createCSVFile('Hits');

    // Invoke function to get Three Hits csv file
    createHitOutcomeCSVFile('TCount','Hits');

    // Invoke function to get O2 Hits csv file
    createHitOutcomeCSVFile('BCount','Login');

    echo "Generated successfully";

?>
符合highcharts格式的预期csv文件:

var Login_Hits= [[1427826600000,8763
]]
尝试调试它…
这将比看到打字错误更容易…
tmp文件似乎已损坏…
尝试显示
$row
变量和
$query


问题可能来自这里…

在while循环中,我在两个函数中都使用了mysql\u fetch\u assoc而不是mysql\u fetch\u数组

while($row = mysql_fetch_assoc($query))
    {
      fputcsv($fp, $row);

    }

内容在Csv文件中不会重复两次。这很有效,请尝试

@random是的,正如你所说,我已经重复了它。它只是从那里来的。但是为了调试起见,我已经将它重命名为$query1和$row1,但我没有得到它。你能告诉我们它们的内容吗?这会有帮助;)@Csv文件中的随机信息我得到的数据重复如下:var Login_Hits=[[142782660000014278266000087638763]]而不是var Login_Hits=[[1427826600008763]]并且我得到的是mysql_fetch_array()期望参数1是资源错误我想你的tmp文件中也有这个?但是你的
$row
$query
的内容呢?@random我已经将函数改为mysql\u fetch\u assoc in while循环,现在它工作正常。感谢你的回答。它是如何连接到Highcharts库的?@Pawel Fus Csv文件格式是Highcharts的。因此我给了Highcharts标签。
while($row = mysql_fetch_assoc($query))
    {
      fputcsv($fp, $row);

    }