【问题标题】:Cannot write to my csv file from Oracle database using PHP无法使用 PHP 从 Oracle 数据库写入我的 csv 文件
【发布时间】:2020-01-14 16:08:14
【问题描述】:

我认为我正确使用了 fputcsv。我的数据库表包含两列,两列中都有日期和数字。我使用的是 oracle 数据库和 windows 2008 服务器。

//Connexion BDD Oracle
$connect = odbc_connect("oraclesrc", "xe", "sec123");

$query = "select * from timedata";

$result = odbc_exec($connect, $query);

$numOF = 0;
while(odbc_fetch_row($result)) {
    $emp = odbc_result($result, 1);
    $time = odbc_result($result, 2);
    $numOF++;
    echo $emp; 
    echo $time;     
}

$fp = fopen('testfile.csv', 'w');
foreach ($row as $result) {
    fputcsv($fp, $result);
}
fclose($fp);

odbc_close($connect);

【问题讨论】:

  • 良好的代码缩进将帮助我们阅读代码,更重要的是,它将帮助您调试代码Take a quick look at a coding standard 为您自己的利益。您可能会被要求在几周/几个月内修改此代码,最后您会感谢我的。
  • 你写了一个WHILE循环来处理结果集,但是你没有在里面写csv文件??
  • 我必须把我的 foreach 放在我的 while 中?
  • while 循环是否产生任何输出?
  • $row 在您尝试对其进行 foreach 循环之前似乎不存在??

标签: php oracle csv odbc fputcsv


【解决方案1】:

while 循环一次获取一个结果行。如果你改为使用odbc_fetch_array($result),你将得到一个Assoc 数组,与fputcsv() 想要看到的完全一样。

//Connexion BDD Oracle
$connect = odbc_connect("oraclesrc", "xe", "sec123");
$query = "select * from timedata";
$result = odbc_exec($connect, $query);

$fp = fopen('testfile.csv', 'w');

while($row = odbc_fetch_array($result)) {
    fputcsv($fp, $row);
}
fclose($fp);
odbc_close($connect);

【讨论】:

  • 完美,有效!非常感谢您的解释
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-10
  • 1970-01-01
  • 1970-01-01
  • 2015-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多