如何在php的csv文件中添加sql oracle查询的结果?
我有一个连接到oracle数据库的php代码,请求检索我想要的信息,下面是我的代码:如何在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
$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之前就行了