【发布时间】:2015-12-22 15:56:46
【问题描述】:
我正在尝试将 SQL 查询中的行(结果)保存到 csv 文件中。 我正在使用数组推送来将结果放入列表中。后来我把这个列表中的数据放到了我的 csv 文件中。
我的代码:
while ($row = $query->fetch_assoc())
{
echo sprintf( $row['campaign']);
array_push($list, $row['campaign']);
}
结果在那里,因为 sprintf 有效。问题在于array_push 的语法。我什至尝试过:
array_push($list, array(''.$row['campaign']);
我收到一个错误:
fputcsv() 期望参数 2 是数组
完整代码在这里:
$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 因为第二列必须为空白才能手动添加内容。
标签: php sql fputcsv array-push