无法在CSV导出中组合2个表

时间:2010-10-18 12:56:05

标签: php mysql

以下是我为此问题提出的代码。     

$link = mysql_connect($host, $user, $pass) or die("Can not connect to the host." . mysql_error());
mysql_select_db($db) or die("Can not connect to the particular database.");

$result = mysql_query("SHOW COLUMNS FROM ".$table."");
$i = 0;
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
$csv_output .= $row['Field']."; ";
$i++;
}
}
$csv_output .= "\n";

$values = mysql_query("SELECT * FROM ".$table." WHERE forwarded_oce='1'");
while ($rowr = mysql_fetch_row($values)) {
for ($j=0;$j<$i;$j++) {
$csv_output .= $rowr[$j]."; ";
$smallerid = $rowr[$i-1];
$smaller = mysql_query("SELECT budget FROM `db`.`table` WHERE id='$smallerid'");
}
$csv_output .= $smaller;
$csv_output .= "\n";
}

$filename = $file."_".date("Y-m-d_H-i",time());
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header( "Content-disposition: filename=".$filename.".csv");
print $csv_output;
exit;
?>

所以,问题在于,当我尝试使用来自不同mysql表的附加信息添加额外列时,它会打印出空白。我似乎无法在代码中找到我的错误,但也许有人知道,或者已经完成了这些任务,至少指出了我正确的方向。

我要做的是 - 组合来自2个不同MySQL表的数据,从第二个表中选择的数据的标识符来自第一个表的最后一列。

如果您知道任何框架可以帮助我解决这个问题,那将是完美的。我已经把这个问题撞到墙上2天了,官方的PHP文档在mysql_query部分没有这样的问题。 ..... 感谢!!!!!

2 个答案:

答案 0 :(得分:1)

你使用

mysql_query

但是你没有得到结果行:

mysql_resultmysql_fetch_row

在查询行之后添加另一行,如:

$smaller = mysql_query("SELECT budget FROM `db`.`table` WHERE id='$smallerid'");

$smaller = mysql_fetch_row($smaller);

答案 1 :(得分:1)

我不确定您要做什么,但似乎您想要获取最后一列值并使用它来从另一个表中查找值并将其添加到记录中。为此,我认为这样的事情应该有效:

$link = mysql_connect($host, $user, $pass) or die("Can not connect to the host." . mysql_error());
mysql_select_db($db) or die("Can not connect to the particular database.");

$csv_output = "";
$last_col = "";
$values = mysql_query("SELECT * FROM ".$table." WHERE forwarded_oce='1'");
while ($rowr = mysql_fetch_assoc($values)) {
    if(!$csv_output){
        foreach($rowr as $fld_name => $fld_val){
            $csv_output .= $fld_name.", ";
            $last_col = $fld_name;
        }
        $csv_output .= "New_Field\n";
    }

    $smallerid = $rowr[$last_col];
    list($smaller) = mysql_fetch_row(mysql_query("SELECT budget FROM `db`.`table` WHERE id = '$smallerid'"));
    $rowr[] = $smaller;

    $csv_output .= implode(', ' , $rowr) ; 
    $csv_output .= "\n";
}

$filename = $file."_".date("Y-m-d_H-i",time());
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header( "Content-disposition: filename=".$filename.".csv");
print $csv_output;
exit;