我真的是 php 的新手,我所学的一切都来 self 的学校教科书和在线研究。话虽如此,我正在努力完成一项任务,但我被困在了最后一部分。对于最后一部分,作业要求“创建一个 PHP 脚本,将员工表的内容转储到 CSV 文本文件中,每个记录的值都以逗号分隔。每个新记录都应在新行开始”强>.我尝试了很多在线教程,但没有一个教过如何将此事件放入按钮中。我包含了我的代码,这样您就可以看到我的困惑情况。这还不错,但我相信我可以用更少的代码完成同样的任务。我再次开始,这是我现在能做的最好的。谁能就如何做到这一点提出任何建议。我在第 140 行有我的按钮。我还使用了 db_connect() 函数,所以我不必多次编写它。我可以在保存为 csv 之前使用它来读取数据库。
如有任何建议,我们将不胜感激。请注意,要遵循的代码很多。
<h2>Employee Search</h2>
<form action="Draft.php" name="dbToCSV" method="GET">
<input type="submit" name="dbToCSV" value="Export Database to CSV" <?php if (isset($_GET['dbToCSV']))
{
//Do this code
}
else
{
echo "Error!";
} ?>><br />
</form>
<form action="Draft.php" method="GET">
By name: <input type="text" name="searchName">
<input type="submit" value="Search Name"><br />
</form>
<form action="Draft.php" method="GET">
By language: <input type="text" name="searchLang">
<input type="submit" value="Search Language"><br />
</form>
最佳答案
都2017年了,现在mysqli比mysql还普遍。所以这是 Josh Liptzin 的答案的 mysqli 版本:
<?php
/* Attempt MySQL server connection. */
$connection = mysqli_connect($database_server, $database_username, $database_password, $database_name);
// Check connection
if($connection === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
$query = "SELECT * FROM Employee_data";
$result = mysqli_query($connection, $query);
$number_of_fields = mysqli_num_fields($result);
$headers = array();
for ($i = 0; $i < $number_of_fields; $i++) {
$headers[] = mysqli_field_name($result , $i);
}
$fp = fopen('php://output', 'w');
if ($fp && $result) {
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="export.csv"');
header('Pragma: no-cache');
header('Expires: 0');
fputcsv($fp, $headers);
while ($row = $result->fetch_array(MYSQLI_NUM)) {
fputcsv($fp, array_values($row));
}
die;
}
function mysqli_field_name($result, $field_offset)
{
$properties = mysqli_fetch_field_direct($result, $field_offset);
return is_object($properties) ? $properties->name : null;
}
?>
关于php - 通过 php 按钮将表格导出到 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21923934/