【问题标题】:mySql INTO OUTFILE problem with phpphp 的 mySql INTO OUTFILE 问题
【发布时间】:2011-04-20 10:29:12
【问题描述】:

我正在使用 mySql INTO OUTFILE 生成包含 sql 数据的文件。

$wpdb->query("SELECT * INTO OUTFILE 'result.sql'  FROM ". DB_PHOTOS .";");

我现在想将文件下载到客户端(使用 PHP)。因为它是一个 WordPress 插件,所以我不想特定于位置(如 c:/result)。如何使用 PHP 获取该文件并下载它?

【问题讨论】:

    标签: php mysql sql into-outfile


    【解决方案1】:

    形成mysql手册:

    SELECT ... INTO OUTFILE 语句的主要目的是让您非常快速地将表转储到服务器计算机上的文本文件中。如果您想在服务器主机以外的其他主机上创建结果文件,通常不能使用 SELECT ... INTO OUTFILE,因为无法写入相对于服务器主机文件系统的文件路径。

    意思是,如果你的 php 和 mysql 在同一台本地机器上,你可以将文件转储到特定位置,然后将文件移动到更好的位置或直接提供它有点像readfile()

    如果 DB 和 Web 服务器位于不同的机器上,这确实是不可用的。取决于您的意图,理论上您可以通过 system() 调用使用mysql -e "SELECT ..." > file_name 在本地生成文件,但它也不是通用的。

    【讨论】:

    • 问题是我无法控制主机。 mySql和PHP可以在同一个服务器,不能!
    • 是的,我明白这一点,但关键是使用 ... INTO OUTFILE 文件将始终保存在 MySQL 服务器端(+ 许多主机可能不允许这样做)。根据您的需要,您可以尝试实施类似于我在原始答案编辑中建议的内容。
    【解决方案2】:

    “temp”目录允许写入几乎所有托管服务提供商。一种解决方案是写入“/tmp”(Linux)或 %TEMP%(Windows)。

    完成后,PHP 脚本可以将该文件流式传输到客户端,并在流式传输完成后删除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-21
      • 2011-05-18
      • 1970-01-01
      • 2012-02-26
      • 2014-04-11
      • 2010-11-05
      • 2010-10-31
      相关资源
      最近更新 更多