我在这里做错了什么。我希望我们最初得到的数组被转置。然后正则表达式分解其中一个列,以便我们可以查询数据库中的另一个表以用正确的标题替换该列标题。正则表达式是否正确?转置是否正确?
这将得到我们想要的查询
exportMysqlToCsv($tablename,$tokenmain, $id);
function exportMysqlToCsv($tablename,$tokenmain, $id, $filename = 'Results.csv'){
$sql_query = "select * from $tablename where $tokenmain";
// Gets the data from the database
$result = mysql_query($sql_query);
$f = fopen('php://temp', 'wt');
$first = true;
$temp = mysql_fetch_array($result);
我希望这可以转换我们刚刚得到的数组。不确定这里
array_unshift($temp, null);
$transposed_array = call_user_func_array('array_map', $temp);
然后我们循环遍历 transposed-array 并替换我们收到的列标题(例如 111X2222X3333)并将它们拆分以查询我们想要替换它们的标题并将其输出到 excel 文件。这是我非常困惑的地方。
for ($i = 0; $i < $count; $i++) {
if ($transposed_array[$i][0])//starts with a number
{
$sid = regexp /^[0-9]*/
$gid = regexp /X[0-9]*X/
//remove first and last character from $gid
$gid = str_replace("X", "", $gid)
$qid = regexp /[0-9]*$/
$question_text = mysql_query("select question from lime_questions where sid = ".$sid." and gid = ".$gid." and qid = ".$qid." limit 1");
$transposed_array[$i][5] = $question_test
}
这应该将数组输出到 csv 文件
while ($row = mysql_fetch_assoc($result))
{
if ($first)
{
fputcsv($f, array_keys($row));
$first = false;
}
fputcsv($f, $row);
} // end while
//恢复正常处理
$size = ftell($f);
rewind($f);
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Length: $size");
// 以适当的 mime 类型输出到浏览器,您可以选择 ;)
header("Content-type: text/x-csv");
header("Content-type: text/csv");
header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=$filename");
fpassthru($f);
exit;