【问题标题】:How to avoid unnecessary double quotation (") in fputcsv?如何避免 fputcsv 中不必要的双引号 (")?
【发布时间】:2018-04-30 10:51:30
【问题描述】:

我将使用 fputcsv 函数通过 PHP 将查询的输出导出到文本文件(不是 CSV 文件)中,但是当我打开文本文件时,会在开头添加额外的双引号 (") & 结束,也在中间:

"SET: NEID=35;"
"ADD OPDNAL:ENTR=571,DIGIT=""703901943"",NANNAT=ALL,NAME=""CallingFilter"",RATIO2=0;"

这是我想要的结果:

SET: NEID=35;
ADD OPDNAL:ENTR=571,DIGIT="703901943",NANNAT=ALL,NAME="Calling Filter",RATIO2=0; 

我的代码如下:

$sql="select 'SET: NEID=35;' as ACC_OFFNET from dual
          union all
          SELECT ACC_OFFNET FROM JLD_ADD WHERE ACC_OFFNET NOT IN (SELECT ACC_OFFNET FROM JLD_ADD_BK)
          union all
          select 'syn' as ACC_OFFNET from dual";

$result = odbc_exec($connect_raidprd, $sql) or die("Couldn't execute query! ".odbc_errormsg());

$date=date('Y-m-d H:ia',time());
$update = str_replace(':','-',$date);

$filenameJLD = "JLD-ADD-". $update.".csv";

$handle = fopen($filenameJLD, 'w+');

while ($row =odbc_fetch_array($result)) {
    fputcsv($handle,array($row['ACC_OFFNET']));     
}

// Finish writing the file
fclose($handle);
odbc_close($connect_raidprd);

或者,fwrite 是否可以接受数组作为参数?

【问题讨论】:

  • fwrite 不接受数组,但您可以implode() 数组。或者你也可以使用file_put_contents()
  • 非常感谢,它起作用了,但即使我使用
    这样,也只能在每行之后进行换行。 while ($row =odbc_fetch_array($result)) { $data=implode("
    ",array($row['ACC_OFFNET'])); fwrite($句柄,$数据); }
  • 谢谢,问题已经解决了。

标签: php oracle fwrite fputcsv


【解决方案1】:

我认为这就是您要寻找的。这将为您提供干净的 Oracle SQL 输出。首先在 Oracle SQL 中进行测试,只需复制、粘贴和运行即可。然后将其添加到您的 PHP 并在需要时将其包含在 "

SELECT 'select ''SET: NEID=35;'' as ACC_OFFNET from dual
    union all
    SELECT ACC_OFFNET FROM JLD_ADD WHERE ACC_OFFNET NOT IN (SELECT ACC_OFFNET FROM JLD_ADD_BK)
    union all
    select ''syn'' as ACC_OFFNET from dual;'
 FROM dual
/

输出 - 此查询将在 Oracle Sql 中运行,并且不会添加任何双引号:

    select 'SET: NEID=35;' as ACC_OFFNET from dual
    union all
    SELECT ACC_OFFNET FROM JLD_ADD WHERE ACC_OFFNET NOT IN (SELECT ACC_OFFNET FROM JLD_ADD_BK)
    union all
    select 'syn' as ACC_OFFNET from dual;

【讨论】:

  • 不,我的问题是对于那些精通 PHP 的人,如何使用 fwrite() 函数而不是 fputcsv() 函数来接受数组。我需要以示例文本格式输出
  • 没关系。但是,如果您的 Oracle SQL 格式不正确,那么 Oracle 中的查询将失败。所以,我会先从 Oracle 开始。您的双引号似乎来自您的第二个选择。您需要发布有关您的数据的更多信息并创建一些类似于您的第二个查询数据的测试数据...
猜你喜欢
  • 2014-05-03
  • 1970-01-01
  • 1970-01-01
  • 2011-09-08
  • 2012-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-23
相关资源
最近更新 更多