首页 > 解决方案 > 如何在php的csv文件中添加sql oracle查询的结果?

问题描述

我有一个连接到 oracle 数据库的 php 代码,并请求检索我想要的信息,这是我的代码:

$query = "SELECT ACTIVE_SIZES FROM ADA_ACTIVE_SIZE2_VIEW WHERE ADA_STYLE = 'SCPCL4'";  
$result = odbc_exec($connect, $query);
  
   while($final = odbc_fetch_array($result)) {
        
         print_r($final); //Array ( [ACTIVE_SIZES] => XS-S-M-L-XL-2XL )
        
       } 

现在我正在读取一个 csv 文件,我想修改此代码以将我的查询结果添加到文件末尾的列中。我已经在这一列的末尾添加了两列,但是我的查询在 csv 文件中没有返回任何内容,请问我该怎么做?

<?php 
//Modifications on csv file
$delimiter = ";"; 
$csv_data = array();
if (($handle = fopen($nomcsv, 'r')) !== FALSE) {
    while (($data = fgetcsv($handle, 10000, $delimiter)) !== FALSE) {
        //Add two columns at the end
        $data['Pictures Names'] = (!empty($data[4]) ? ($data[7] ?: '') . "_" . $data[4] . '.jpg' : ''); 
        $data['Color-Description'] = (!empty($data[3]) ? (ltrim($data[4], '0') ?: '') . "-" . $data[3] : '');  
        
        //Query
        $query = "SELECT ACTIVE_SIZES FROM ADA_ACTIVE_SIZE2_VIEW WHERE ADA_STYLE = '".$data[4]."'";
        $result = odbc_exec($connect, $query);
        
         while($final = odbc_fetch_array($result)) {
        
                $data['Sizes'] = $final;
               var_dump($final); //array(1) { ["ACTIVE_SIZES"]=> string(8) "XS-S-M-L" }array(1) { ["ACTIVE_SIZES"]=> string(8) "XS-S-M-L" }...
            
        }  
        
            $csv_data[] = $data; 
            var_dump($csv_data); //["Pictures Names"]=> string(15) "SCJEG4_1041.jpg" ["Color-Description"]=> string(12) "1041-MUSTARD" ["Sizes"]=> array(1) { ["ACTIVE_SIZES"]=> string(15) "XS-S-M-L-XL-2XL" } } }
             
    }
    fclose($handle);
}

if (($handle = fopen($nomcsv, 'w')) !== FALSE) {
    foreach ($csv_data as $data) {
        fputcsv($handle, $data, $delimiter);
    }
    fclose($handle);
}

?>

最后,我的 csv 文件中有这个:

在此处输入图像描述

标签: phpsqloraclecsv

解决方案


试试这个,唯一的事情是你需要定义你的 ActiveSizes 索引并将其推送到 sizes 索引

  $delimiter = ";"; 
  $csv_data = array();
  if (($handle = fopen($nomcsv, 'r')) !== FALSE) {
      while (($data = fgetcsv($handle, 10000, $delimiter)) !== FALSE) {
          //Add two columns at the end
          $data['Pictures Names'] = (!empty($data[4]) ? ($data[7] ?: '') . "_" . $data[4] . '.jpg' : ''); 
          $data['Color-Description'] = (!empty($data[3]) ? (ltrim($data[4], '0') ?: '') . "-" . $data[3] : '');  
          
          //Query
          $query = "SELECT ACTIVE_SIZES FROM ADA_ACTIVE_SIZE2_VIEW WHERE ADA_STYLE = '".$data[4]."'";

          $result = odbc_exec($connect, $query);
          
          while($row = odbc_fetch_array($result)) {
          
              $data['Sizes'][] = $row['ACTIVE_SIZES'];
              
          }  
          
          $csv_data[] = $data; 
              
      }
      
      fclose($handle);
  }

  //var_dump($csv_data);

  if (($handle = fopen($nomcsv, 'w')) !== FALSE) {
      foreach ($csv_data as $data) {
          fputcsv($handle, $data, $delimiter);
      }

      fclose($handle);
  }

推荐阅读