【问题标题】:Export mysql row string data to .text file in php将mysql行字符串数据导出到php中的.text文件
【发布时间】:2016-05-31 14:28:13
【问题描述】:

我正在使用以下代码从 mysql 行获取回显结果,但我需要将这些输出到将生成和下载的 .text 文件(我不需要回显它)。我的 sql 数据是简单的字符串,如下所示-

Ar2rew3
df3432ss
sddfdsf
sdfsdfsd
sdfsdsd3
sererere

我只需要在每个字符串中换行即可。请告诉我现在应该在当前代码中添加什么代码?我需要非常简单的解决方案。我想将所有的回声输出放在 .text 文件中,这些文件将被下载

echo '<form action="" method="post">
  Email:<input type="text" name="emailadrs"><br>
  Worklink:<input type="text" name="worklink"><br>
  <input type="submit" name="submit" value="Submit"></form>';

if (isset($_POST['submit'])) {
 $emailadrs = $_POST['emailadrs'];
 $worklink = $_POST['worklink'];

 $sub_stat=1;
 $qu = mysql_query("SELECT asin FROM working WHERE w_email='$emailadrs' AND w_asin_link='$worklink' AND submission_status='$sub_stat'");
 while ($row = mysql_fetch_array($qu)) {
   $asin = $row['asin']."<br>";
   echo $asin;
 }
}

【问题讨论】:

标签: php mysql


【解决方案1】:

好的,所以我不会直接回答你的问题,因为我真的不相信从长远来看它会对你有所帮助,不过我会给你一些建议......

1) 您的脚本容易受到 SQL 注入攻击 - 如果您继续这样做,任何人都极有可能通过精心设计的 SQL 注入攻击导出您数据库的任何部分。 - 如果您不知道什么是 SQL 注入,请阅读此处:http://shishirceh.blogspot.de/2011/06/sql-injection-beginners-tutorial.html

2) 查看您的代码,我猜您对 PHP 还很陌生(我们都必须从正确的地方开始)。编写“vanilla” PHP 可能会让人头疼,幸运的是 PHP 社区中的人们已经创建了“框架”,您可以使用这些框架来降低创建 PHP 应用程序的风险。我个人喜欢使用 Symfony,它非常容易上手,教程:http://symfony.com/doc/current/quick_tour/the_big_picture.html

3) 您使用 MySQL 的方式已经过时,并且与最新版本的 PHP 不兼容。在这里查看更好的选择:http://www.w3schools.com/php/php_mysql_prepared_statements.asp

4) 你的编程方式(混合用户看到的部分和使网站工作的部分)会导致你遇到很多问题(安全性、与其他库的兼容性、健全性)框架会处理这适合您,并为您提供放置这些元素的特定位置。然而,要真正利用 PHP 并成为一名“优秀”的程序员,你应该首先学习面向对象的编程——我建议你通读这本书:http://www.ycit-he.org/files/Resources/PHP%20Objects,%20Patterns,%20and%20Practice.pdf

5) 如果你走 symfony 路线,他们有一个用于写入文件的文件系统组件:http://symfony.com/doc/current/components/filesystem/introduction.html

6) 使用 Symfony,您可以在生成文件后轻松强制用户下载文件

// Generate response
$response = new Response();

// Set headers
$response->headers->set('Cache-Control', 'private');
$response->headers->set('Content-type', mime_content_type($filename));
$response->headers->set('Content-Disposition', 'attachment; filename="' . basename($filename) . '";');
$response->headers->set('Content-length', filesize($filename));

// Send headers before outputting anything
$response->sendHeaders();

$response->setContent(file_get_contents($filename));

希望对你有帮助,

标记

【讨论】:

    猜你喜欢
    • 2013-06-01
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 2021-02-17
    • 1970-01-01
    相关资源
    最近更新 更多