dongsi2317 2016-07-19 09:20
浏览 46
已采纳

php mysql查询输出文件

I am trying to create a script that runs on my database. The query itself works fine in phpmyadmin but need to be able to run it elsewhere. So my idea was, put it into a php script.

My query looks like this:

SET @sql_text =
CONCAT ("SELECT
`table1`.`field1`,
`table2`.`field2`

FROM `table1`,`table2`

WHERE
`table1`.`field1`=`table2`.`field2`

 into outfile '/pathtofolder/myresult-"
   , DATE_FORMAT( NOW(), '%Y%m%d-%H:%i')
   , ".csv'
FIELDS TERMINATED BY '|'
    "    );

PREPARE s1 FROM @sql_text;
EXECUTE s1;

DROP PREPARE s1;

Now I seem to run into trouble trying to get this into php. My attempt:

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "databasename";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = 'SET @sql_text =
CONCAT ("SELECT
`table1`.`field1`,
`table2`.`field2`

FROM `table1`,`table2`

WHERE
`table1`.`field1`=`table2`.`field2`

 into outfile '/pathtofolder/myresult-"
   , DATE_FORMAT( NOW(), '%Y%m%d-%H:%i')
   , ".csv'
FIELDS TERMINATED BY '|'
    "    );

PREPARE s1 FROM @sql_text;
EXECUTE s1;

DROP PREPARE s1;'

if ($conn->query($sql) === TRUE) {
    echo "Record updated successfully";
} else {
    echo "Error updating record: " . $conn->error;
}

$conn->close();
?> 

Unfortunatly this does not seem to work. What am I overlooking?

  • 写回答

1条回答 默认 最新

  • dongmiyu8979 2016-07-19 09:32
    关注

    As the sql is within single quotes but contains single quotes you would need to escape them using the backslash.

    $sql = 'SET @sql_text =
    CONCAT ("SELECT
    `table1`.`field1`,
    `table2`.`field2`
    
    FROM `table1`,`table2`
    
    WHERE
    `table1`.`field1`=`table2`.`field2`
    
     into outfile \'/pathtofolder/myresult-"
       , DATE_FORMAT( NOW(), \'%Y%m%d-%H:%i\')
       , ".csv\'
    FIELDS TERMINATED BY \'|\'
        "    );
    
    PREPARE s1 FROM @sql_text;
    EXECUTE s1;
    
    DROP PREPARE s1;'
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 请问为什么我配置IPsec后PC1 ping不通 PC2,抓包出来数据包也并没有被加密
  • ¥200 求博主教我搞定neo4j简易问答系统,有偿
  • ¥15 nginx的使用与作用
  • ¥100 关于#VijeoCitect#的问题,如何解决?(标签-ar|关键词-数据类型)
  • ¥15 一个矿井排水监控系统的plc梯形图,求各程序段都是什么意思
  • ¥50 安卓10如何在没有root权限的情况下设置开机自动启动指定app?
  • ¥15 ats2837 spi2从机的代码
  • ¥200 wsl2 vllm qwen1.5部署问题
  • ¥100 有偿求数字经济对经贸的影响机制的一个数学模型,弄不出来已经快要碎掉了
  • ¥15 数学建模数学建模需要