我在使用php导出csv文件时遇到问题,一切都很好,除了产品,我希望所有产品都在一个单元格中,产品来自不同的表,我尝试使用以下代码,但无法获得结果,因为我期待, 请帮我。 感谢
ID Status Products Buyer Name
1 Pending book1, book2 bheem
$row = array();
$row[] = 'ID';
$row[] = 'Status';
$row[] = 'Products';
$row[] = 'Buyer Name';
$data .= join(',', $row)."\\n";
$query = sprintf( "SELECT * FROM orders WHERE order_id='{$_GET['order_id']}'" );
$result = mysql_query( $query ) or die( mysql_error() );
$row2 = mysql_fetch_assoc( $result );
$row = array(); // We must clear the previous values
$row[] = $row2['order_id'];
$row[] = $row2['status'];
//Browse product name
$product_q = sprintf("SELECT * FROM books WHERE bid='{$row2['bid']}'");
$res_prd = mysql_query($product_q);
$prow = '';
while($prows = mysql_fetch_assoc($res_prd)) {
$prow.= $prows['product_name'];
}
$row[] = $prow;
$row[] = $row2['buyer_name'];
$data .= join(',', $row)."\n";
header("Content-type: application/x-msdownload");
header("Content-Disposition: attachment; filename=order.csv");
header("Pragma: no-cache");
header("Expires: 0");
echo $data;
答案 0 :(得分:0)
$query = sprintf( "SELECT * FROM orders WHERE order_id='{$_GET['order_id']}'" );
$result = mysql_query( $query ) or die( mysql_error() );
$row2 = mysql_fetch_assoc( $result );
while($row2 = mysql_fetch_assoc( $result )) {
$row = array(); // We must clear the previous values
$row[] = $row2['order_id'];
$row[] = $row2['status'];
$product_q = sprintf("SELECT * FROM books WHERE bid='{$row2['bid']}'");
$res_prd = mysql_query($product_q);
$prow = '';
while($prows = mysql_fetch_assoc($res_prd)) {
$prow.= $prows['product_name'];
} //End inner foreach
$row[] = $prow; //End while
$row[] = $row2['buyer_name'];
$data .= join(',', $row)."\n";
}
尝试这样......可能会有帮助:)
答案 1 :(得分:0)
使用连接确实使这些东西更容易。
$orderid = intval($_GET['order_id']);
$query = sprintf("SELECT order_id, status, product_name, buyer_name FROM books INNER JOIN orders ON bid = order_id WHERE order_id='{$orderid}'");
现在您的查询将得到一个包含以下内容的数组: order_id,status,product_name,buyer_name
破坏你的结果并输出内容和你的成就。
答案 2 :(得分:0)
问题在于','是单元格分隔符,并且当您列出产品时使用',',这会将每个产品推送到新单元格中。
我认为您需要做的就是将while循环更改为:
$prow = '';
while($prows = mysql_fetch_assoc($res_prd)) {
if($prow === '') {$prow = '"';}//start escaping the cell
else{$prow .=', ';} // separate each product by a space and comma
$prow.= $prows['product_name'];//add the product name
}
$prow .= '"';//finish escaping the cell
通过将产品单元格用双引号括起来转义,可以在该单元格中使用逗号。