首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL在OUTFILE中的应用

问MySQL在OUTFILE中的应用
EN

Stack Overflow用户
提问于 2017-03-24 20:40:00
回答 1查看 212关注 0票数 0

最近,我将一个项目转移到一个活动的VM实例中,它在使用XAMPP在我的macOS盒上进行开发和测试时工作得很好。实际上,web应用程序有3种导出选项: XML、PDF和CSV。XML工作良好,使用SELECT语句创建,然后循环遍历结果并将其推入XML文件。

但是,对于CSV和PDF导出(PDF使用TCPDF),我使用了:

CSV

代码语言:javascript
复制
INTO OUTFILE '/tmp/$department_name+feedback+$timestamp.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'";

PDF

代码语言:javascript
复制
INTO OUTFILE '/tmp/$department_name+feedback+$timestamp.txt' FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n'";

但是,该文件从未被写入/tmp。我认为这是一个权限问题,但是该目录是由root拥有的,并且如预期的那样具有所有必要的权限。

工作的XML代码如下:

代码语言:javascript
复制
$fileLocation = '/tmp/' . $location_name . '+feedback+' . $timestamp . '+.xml';

$sql = "SELECT CONCAT (e.name,' ', e.surname) AS Fullname, f.score AS Score, d.department_name AS Department, f.feedback AS Feedback
            FROM employee AS e
            JOIN feedback AS f
            ON e.qr_id = f.qr_id
            JOIN departments as d
            ON e.department_id = d.department_id
            JOIN location AS l
            ON e.location_id = l.location_id
            AND e.location_id = '$location'
            AND e.company_id = '$company_id'
            AND f.`report_Time` BETWEEN SUBDATE(CURDATE(),
                                INTERVAL 1 MONTH) AND NOW()
                                ORDER BY f.score DESC";


$xml = new XMLWriter();

$xml->openURI($fileLocation);
$xml->startDocument();
$xml->setIndent(true);

$xml->startElement('feedback');

foreach ($mysqli->query($sql) as $row){
    $xml->startElement("Fullname");
    $xml->writeRaw($row['Fullname']);
    $xml->startElement("Score");
    $xml->writeRaw($row['Score']);
    $xml->startElement("Feedback");
    $xml->writeRaw($row['Feedback']);
    $xml->startElement("Department");
    $xml->writeRaw($row['Department']);

    $xml->endElement();
}

$xml->endElement();

header('Content-type: text/xml');
$xml->flush();


$file_url = $fileLocation;
header('Content-Type: application/xml');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\"");
readfile($file_url);

因此,我不知道为什么XML在写入/tmp目录时工作,而PDF不工作,这是在Google平台VM实例上运行的。正如我之前所说的,CSV & PDF出口在我的macOS机器上工作得很好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-24 21:07:49

显示此结果:

代码语言:javascript
复制
SHOW VARIABLES LIKE 'secure_file_priv';

如果结果不为空,则只能在此目录中写入。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43008764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档