Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php的csv文件中添加sql oracle查询的结果?_Php_Sql_Oracle_Csv - Fatal编程技术网

如何在php的csv文件中添加sql oracle查询的结果?

如何在php的csv文件中添加sql oracle查询的结果?,php,sql,oracle,csv,Php,Sql,Oracle,Csv,我有一个连接到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)) { pr

我有一个连接到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文件中有以下内容:


试试这个,唯一需要做的就是定义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);
  }

这是相同的帖子,请不要滥用系统。你知道你的链条的哪个环节断了吗?我将首先验证
$data
的内容。然后,
$query
的值。然后是
$final
的值。然后是
$csv_data
的值。等等顺便说一句,你的SQL是开放的注入;阅读准备好的报表。打印(最终版);我有我所有的信息,但你认为问题在于数组的推送@蒂莫托尼已经更新了我的密码,很好。现在检查
$csv\u数据
。继续,直到你发现错误的数据或者它没有达到你的预期。非常感谢你的时间和解释,它工作得非常好!我只是有一个问题,那就是列的标题是空的,我怎么能把'size'作为它的名字呢?只要把fputcsv($handle,['first_column','second_column',…..等等)放在foreach之前就行了