我试图将SQL查询中的行(结果)保存到csv文件中。 我正在使用数组推送为了把结果放在一个列表中。后来我把这个列表中的数据放到我的csv文件中。SQL查询中的数组推送行
我的代码:
while ($row = $query->fetch_assoc())
{
echo sprintf($row['campaign']);
array_push($list, $row['campaign']);
}
的结果是因为有工作的sprintf。问题在于array_push的语法。我甚至尝试:
array_push($list, array(''.$row['campaign']);
我得到一个错误:
fputcsv() expects parameter 2 to be array
完整的代码是在这里:
$list = array
(
array('old_campaign_name', 'new_campaign_name')
);
// table 1
$sql = ('select distinct(campaign) as campaign from '.$table1.'');
// Run the query
$query = $Db->query($sql);
// Check for SQL errors
if ($Db->error)
{
return ($Db->error);
}
// Put data in the list
while ($row = $query->fetch_assoc())
{
echo sprintf($row['campaign']);
array_push($list,$row['campaign'],'');
}
$fp = fopen($location, 'w');
foreach ($list as $fields)
{
fputcsv($fp, $fields);
}
fclose($fp);
你打算保存整个行,或从该行只是'campaign'价值?无论哪种方式,它看起来像你可能不需要'array_push'。只是'$ list [] = $ row;'或'$ list [] = $ row ['campaign'];'应该可以。 –
我需要使用array_push。因为在我的csv文件中,我不想丢失以前的属性。我只是想添加新的。可能问题出在fputcsv上。 –
为什么你的标题行有两列(旧的和新的活动名称),但你只在数据行中放一列? – Barmar