Как избежать ненужных двойных кавычек (") в fputcsv? - PullRequest
0 голосов
/ 30 апреля 2018

Я собираюсь экспортировать вывод запроса в текстовый файл (не файл CSV) через PHP, используя функцию fputcsv, но когда я открываю текстовый файл, в начале добавляются дополнительные двойные кавычки (") & конец, а также в середине:

"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 может принять массив в качестве аргумента?

1 Ответ

0 голосов
/ 30 апреля 2018

Я думаю, это то, что вы ищете. Это даст вам чистый вывод Oracle SQL. Сначала проверьте это в Oracle SQL, просто скопируйте, вставьте и запустите. Затем добавьте это в ваш PHP и включите его в «при необходимости». Я не в 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;
...