如何在PHP中使用sql指定导出路径?

时间:2018-08-14 06:30:10

标签: php mysql

背景:我在mysql数据库中使用phpMyAdmin(MySQL Workbench)。我编写了一些PHP代码以在数据库中 import 数据,并使用Windows的任务计划程序执行该代码。 <=可以正常工作!

我的主题:现在,我想导出一些数据到Windows文件夹中的文件中。首先,我在phpMyAdmin中编写SQL代码以查看一些调试信息。 独立于php,我的sql查询工作正常。

如果我将代码放在php-programm中,则导出无法正常工作。 我认为问题是由于我的路径指定而引起的。 其他程序部分,特别是Update-part,则应做其应做的事情。

这是我的代码:

<?php

include "../config.php";
$conn = new mysqli('192.168.10.120', 'alb5', 'alb5','testdatenbank');
if ( $conn->connect_error ) {
    die( "Connection failed: " . $conn->connect_error );
} //$conn->connect_error


$sql = "set @sql = concat(\"SELECT `LS_ID_Nr`, `Stk_pro_Krt_DL` * `Krt_DL` + `RB_Stk_pro_Krt_DL` * `RB_Krt_DL`, `Umstellzeit`, `Produktionszeit`, `Teilmeldung`, `Fertigmeldung` 
INTO OUTFILE 'C:/Temp/Export/Test - \", DATE_FORMAT(NOW(), '%Y%m%d%H%i%s'),\" - Test.txt' 
fields terminated by ';' 
lines terminated by '\r\n' 
From praemie where Proof_P = 0\");";

$sql = "prepare s1 from @sql;";
$sql = "execute s1;";
$sql = "DROP PREPARE s1;";
$sql = "UPDATE praemie SET Proof_P = 1 WHERE Proof_P = 0;";

    $result           = $conn->query( $sql );
echo("Error description: " . mysqli_error($conn));
?>

有人知道如何在php中使用sql指定导出路径吗? 预先感谢。

2 个答案:

答案 0 :(得分:1)

这是令人毛骨悚然的方式。

我建议将数据提取到php中,并通过file_put_contents存储。

简单示例:

<?php
include "../config.php";
$conn = new mysqli('192.168.10.120', 'alb5', 'alb5','testdatenbank');
if ( $conn->connect_error ) {
    die( "Connection failed: " . $conn->connect_error );
} //$conn->connect_error

$query = 'SELECT `LS_ID_Nr` AS `LS_ID_Nr`, `Stk_pro_Krt_DL` * `Krt_DL` + `RB_Stk_pro_Krt_DL` * `RB_Krt_DL` AS ``, `Umstellzeit`, `Produktionszeit`, `Teilmeldung`, `Fertigmeldung`FROM praemie WHERE Proof_P = 0';

$result = $conn->query($sql);

file_put_contents('C:/Temp/Export/Test/test.txt', json_encode($result->fetch_all()));

答案 1 :(得分:1)

是的,现在可以使用! 仅针对其他想要这样做的人。

我必须改变两件事。我在其他路径上执行我的程序,所以我不得不写 $include_path = 'C:/xampp/php/pear/PEAR/config.php';这解决了第一个错误。

第二点:快速示例$result = $conn->query($sql);必须为$result = $conn->query($query);

下面是整个代码:

<?php

$include_path = 'C:/xampp/php/pear/PEAR/config.php';
$conn = new mysqli('192.168.10.120', 'alb5', 'alb5','testdatenbank');
if ( $conn->connect_error ) {
    die( "Connection failed: " . $conn->connect_error );
} //$conn->connect_error


$query = 'SELECT `LS_ID_Nr`, `Stk_pro_Krt_DL` * `Krt_DL` + `RB_Stk_pro_Krt_DL` * `RB_Krt_DL` AS `Ges. Stück`, `Umstellzeit`, `Produktionszeit`, `Teilmeldung`, `Fertigmeldung` FROM praemie WHERE Proof_P = 0';

$result = $conn->query($query);

if (mysqli_num_rows($result)!==0)
{
    file_put_contents('C:/Temp/Export/' . date('Y-m-d H-i-s') . '.txt', json_encode($result->fetch_all()));
} 

$sql = "UPDATE praemie SET Proof_P = 1 WHERE Proof_P = 0";

$result = $conn->query( $sql );
echo("Error description: " . mysqli_error($conn));
?>

* Edit:如果结果(查询的行数)不等于零,我将集成一个证明,并使用变量date('Y-m-d H-i-s')为文件赋予唯一名称(注意Windows文件名权限H -< / strong>我-不是H s)

非常感谢达米安,感谢您提供的所有知识和论坛的帮助!

我现在很高兴。

(〜:第一次尝试php,现在可以正常工作了::)