如何从谷歌应用引擎下载csv文件



我无法从谷歌应用引擎下载文件。这在计算引擎中工作。

$sql="SELECT * FROM $table ";
$query = $db->runQuery($sql);
if($query->num_rows > 0) {
    $delimiter = ",";
    $filename = $table . date('Y-m-d') . ".csv";  
    // create a file pointer
    $f = fopen('php://memory', 'w');
    // set column headers
    $fields = array('id', 'srno', 'empid', 'empname');
    fputcsv($f, $fields, $delimiter);
    // output each row of the data, format line as csv and write to file pointer
    while($row = $query->fetch_assoc()) {
        // $status = ($row['status'] == '1') ? 'Active' : 'Inactive';
        $lineData = array(
            $row['id'], $row['srno'], $row['empid'], $row['empname'], ]
        );
        fputcsv($f, $lineData, $delimiter);
    }
    // move back to beginning of file
    fseek($f, 0);
    // set headers to download file rather than display it
    header('Content-Type: text/csv');
    header('Content-Disposition: attachment; filename="' . $filename . '";');
    //output all remaining data on a file pointer
    fpassthru($f);
}
exit;

什么是日志,错误消息?您是如何部署此应用的?你能展示app.yaml吗?应用是否与云 SQL 实例位于同一项目中?标准环境还是灵活环境?5 菲律宾比索还是 7 菲律宾比索?

将 App Engine 连接到云 SQL 时最常见的问题:

  • 应用引擎服务帐号必须具有云 SQL 管理员角色
  • 云 SQL 实例所在的项目必须同时激活云 SQL 和 SQL 管理 API
  • 应用程序和 MySQL 实例之间的连接是通过代理完成的,您可以在 php 代码和 yaml 文件中配置代理。

下面是从 PHP72 连接到 MySQL 实例的示例,您也可以使用此代码进行本地测试。为此,您需要安装并运行云 SQL 代理客户端。

app.yaml

runtime: php72
handlers:
- url: .*
  script: auto
env_variables:
  MYSQL_USER: [MYSQL_USER]
  MYSQL_PASSWORD: [MYSQL_PASSWORD]
  MYSQL_DSN: 'mysql:dbname=[MYSQL_DB_NAME];unix_socket=/cloudsql/[MYSQL_INSTANCE_CONNECTION_NAME]'
beta_settings:
  cloud_sql_instances: [MYSQL_INSTANCE_CONNECTION_NAME]

索引.php

<?php
    $user = getenv('MYSQL_USER');
    $password = getenv('MYSQL_PASSWORD');
    $dsn = getenv("MYSQL_DSN") ?: "mysql:host=127.0.0.1;port=3306;dbname=[MYSQL_DB_NAME]";
    $db = new PDO($dsn, $user, $password);
    try {
        $db = new PDO($dsn, $user, $password);
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        echo "Connected successfully"; 
        }
    catch(PDOException $e)
        {
        echo "Connection failed: " . $e->getMessage();
        }
    $statement = $db->prepare("SELECT * from [MYSQL_TABLE_NAME]");
    $statement->execute();
    $all = $statement->fetchAll();
    foreach ($all as $data) {
      echo $data["id"];
    }
?>

最新更新