在php中将mysql行字符串数据导出到.text文件

时间:2016-05-31 14:28:13

标签: php mysql

我使用以下代码从mysql行获得echo结果,但我需要将这些输出发送到.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;
 }
}

1 个答案:

答案 0 :(得分:1)

好的,所以我不会直接回答你的问题,因为老实说我不相信它会对你有所帮助,但我会给你一些指示......

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

2)看看你的代码我猜你是PHP的新手(我们都必须从正确的位置开始)。编码“vanilla”PHP可能是一件很痛苦的事情,幸运的是,PHP社区中的人们已经创建了“框架”,您可以使用这些框架来创建PHP应用程序带来很多风险。我喜欢亲自使用Symfony,它非常容易上手,tuturial: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路线,他们就会有一个用于写入文件的filesytem组件: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));

希望这有帮助,

标记