gpt4 book ai didi

php - MySQL 数据导出后出现的保存文件对话框(使用 PHP)

转载 作者:行者123 更新时间:2023-11-30 00:27:23 26 4
gpt4 key购买 nike

我发现了许多与此类似的问题的“部分”答案,但我对 PHP 和 MySQL 很陌生,似乎没有一个很好的连贯的答案;我想做的是:

  1. 从名为“生产者”的 MySQL 表中获取所有数据。
  2. 让用户在本地计算机上选择文件名/“另存为”位置。
  3. PHP/MySQL/HTML 获取数据并将其作为 CSV 文件写入。

第 1 部分和第 3 部分很简单;但是让用户选择文件位置/文件名的方法似乎几乎是不可能的。在 HTML 中,用户选择要上传的文件很简单,那么为什么我很难找到一种让用户选择“保存”位置/名称的方法呢?当然,这不是安全风险 - 从服务器下载的安全风险远小于上传到服务器的安全风险。

我希望能够使用漂亮且简单的 MySQL 方法,但我不知道如何将此命令从 PHP 发送到 MySQL;只是把它放在 mysqli_query 中似乎没有做任何事情:

SELECT prodCompany,prodPhone,prodFirstname FROM producers
INTO OUTFILE '/Users/me/Desktop/file.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'

(此方法在 phpMyAdmin 中工作正常)。

所以我现在采用了笨重的逐步 PHP 方法,该方法有效,但显然只将“file.csv”保存到我的桌面。我读过有关 MIME 类型的奇怪提及,但我不确定这对我有何帮助以及如何实现它。

我想要的只是触发一个文件选择器对话框,将该文件路径/名称放入 $filename 变量中。但经过几天的沮丧,我找不到任何有效的东西。任何帮助或建议将不胜感激!

  • 保罗

保存到该文件的 PHP:

<?php

// Create connection
$con=mysqli_connect("xxxxxxxxx","xxxxxxxxx","xxxxxxxxxxxxxx","xxxxxxxxxx");
// Check connection
if (mysqli_connect_errno())
{ echo "Failed to connect to MySQL: " . mysqli_connect_error(); }

$filename = '/Users/me/Desktop/file.csv';
$headers = array('prodCompany', 'prodPhone', 'prodFirstname');

$handle = fopen($filename, 'w');
fputcsv($handle, $headers, ',', '"');

$sql = mysqli_query($con, 'SELECT * FROM producers');

while($results = mysqli_fetch_array($sql)) {
$row = array(
$results['prodCompany'],
$results['prodPhone'],
$results['prodFirstname']
);
fputcsv($handle, $row, ',', '"');
}

fclose($handle);

?>

最佳答案

好的,概念是您想要生成 csv 并让用户保存它。

获取文件名的表单

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Example</title>
</head>

<body>
<form name="test" action="csv_gen.php" method="post">
<label for="filename">File name </label>
<input type="text" name="filename" id="filename" />
<input type="submit" name="submit" value="go get file" />
</form>
</body>
</html>

处理并强制下载 csv 的脚本

<?php
if($_POST) {

header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename='.$_POST['filename'].'.csv');

//replace this with whatever generates your csv and print it
echo "field1,field2,field3,field4,field5\n";

}
?>

这将执行强制下载。对于具有默认下载位置的较新浏览器(例如 Chrome),这将使用用户在表单字段中输入的任何文件名立即下载文件。然后他们将打开该位置并移动文件。这是相当标准的浏览器功能,我不会尝试覆盖。它可能会让那些设置了默认下载位置的人感到困惑。

希望这可以帮助您入门。

关于php - MySQL 数据导出后出现的保存文件对话框(使用 PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22765238/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com