如何从数据库中检索数据以在网页上以csv格式显示?

时间:2016-07-19 16:00:37

标签: php mysql csv

实际上我想在网页上以csv格式显示数据。数据存储在数据库的消息字段中。 数据是:

data    count 
120     80
140     50
170     100
150     70
180     120

我想在csv格式的网页上显示这些数据,用逗号分隔,如:data,count。 我在其他一些网站上发现了这个代码,但不是在网页上显示数据,而是在文件夹中创建csv文件并将数据存储在其中。 这是代码:

// open connection to mysql database   
$connection = mysqli_connect($host, $username, $password, $dbname) or 
die("Connection Error " . mysqli_error($connection));

// fetch mysql table rows   
$sql = "select message from wholesaler";

$result = mysqli_query($connection, $sql) or die("Selection Error " . mysqli_error($connection));

$fp = fopen('books.csv', 'w');
while($row = mysqli_fetch_assoc($result)) {
    fputcsv($fp, $row);
}    
fclose($fp);

//close the db connection    
mysqli_close($connection);

有谁能告诉我解决它的步骤?

1 个答案:

答案 0 :(得分:0)

您提供的代码使用循环将数据保存到CSV文件中。因为您不需要将其保存在文件中,所以您必须使用输出上的某些代码打印行替换此循环。

根据您的代码,您需要替换此部分

$fp = fopen('books.csv', 'w');

while($row = mysqli_fetch_assoc($result))
{
    fputcsv($fp, $row);
}

以此为例

while($row = mysqli_fetch_assoc($result)) { 
    //we need to split your message into array
    $csvRows = explode("\n", $row['message']);

    $head = [];
    if (array_key_exists(0, $csvRows)) {
        $head = explode(' ', trim($csvRows[0]));
    }

    $data = [];
    for ($i = 1; $i < count($csvRows); $i++) {
        $data[] = explode(' ', trim($csvRows[$i]));
    }

    //print recognized headers
    echo '<table width="100%"><tr>';
    foreach ($head as $h) {
        echo "<th>{$h}</th>";
    }
    echo '</tr>';

    //print your csv row as table row
    foreach ($data as $r) {
        echo '<tr>';
        foreach ($r as $v) {
            echo "<td>{$v}</td>";
        }
        echo '</tr>';
    }
    echo '<table>';
}