php - 如何在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 文件中有这个:
解决方案
试试这个,唯一的事情是你需要定义你的 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);
}
推荐阅读
- c# - unity 旋转物体改变位置
- angular - 尽管我在 html 文件中使用 ngModel 设置值,但验证状态正在发送空值时出现错误
- python - 如何根据 ID 查找一行,然后使用 gspread python 编辑该行
- r - knitr 一直执行,出错后无法取消
- greenplum - gpssh-exkeys -f hostfile_exkeys ValueError: 不支持的哈希类型 sha512
- mysql - SQL AVG 按组应用于多个?
- c# - 无法更改其他场景中的游戏对象位置
- javascript - 为什么这个脚本有效?(和其他问题)[JavaScript]
- html - 如何使用 relevel div 高度设置引导图像高度
- sql-server - Kafka JDBC 接收器连接器 - 不支持 USE 语句在数据库之间切换