使用PHP使用多个SQL查询输出为CSV格式
将一些SQL查询输出为CSV格式时遇到一些问题。我可以成功地执行一个查询并将其写入CSV,但我需要在一个查询中执行一个查询,然后我得到了一个很棒的无限循环。这是我到目前为止所拥有的使用PHP使用多个SQL查询输出为CSV格式,php,sql,csv,Php,Sql,Csv,将一些SQL查询输出为CSV格式时遇到一些问题。我可以成功地执行一个查询并将其写入CSV,但我需要在一个查询中执行一个查询,然后我得到了一个很棒的无限循环。这是我到目前为止所拥有的 header( 'Content-Type: text/csv' ); header( 'Content-Disposition: attachment;filename='.$filename); $fp = fopen('php://output', 'w'); $result = mysqli_query($
header( 'Content-Type: text/csv' );
header( 'Content-Disposition: attachment;filename='.$filename);
$fp = fopen('php://output', 'w');
$result = mysqli_query($conn, "SELECT * FROM Customers")
or die("Error: ".mysqli_error($conn));
$row = mysqli_fetch_assoc($result);
if($row) {
fputcsv($fp, array_keys($row));
// reset pointer back to beginning
mysqli_data_seek($result, 0);
}
while($row = mysqli_fetch_assoc($result)) {
$orderResult = mysqli_query($conn,"SELECT * FROM Orders WHERE order_No = '".$row['customer_ID']."'")
or die("Error: ".mysqli_error($conn));
$rowOrder = mysqli_fetch_assoc($orderResult);
fputcsv($fp, array_keys($rowOrder));
mysqli_data_seek($result, 0);
$rowOrder = mysqli_fetch_assoc($orderResult);
fputcsv($fp, $row);
fputcsv($fp, $rowOrder);
}
fclose($fp);
我试图实现的输出是:
在此行中显示客户标题信息a.k.a姓名、姓氏、电子邮件
下一行显示有关客户的信息,例如Tony、Mcguire、,tony@b.c
显示Tony的订单标题信息,例如订单号、订单日期
显示Tony的订单信息,例如5122,6/3/2013
如果我能把它全部显示成两行,那就更好了。这可以清理很多。如果我理解的没错,您希望生成一个报告,其中第1行是标题,后面的每一行是客户/订单数据。这是我举的一个例子:
$sql = "SELECT c.*, o.* FROM Customers AS c
JOIN Orders AS o ON c.CustomerID = o.CustomerID";
$result = mysqli_query($conn, $sql);
$i = 1;
while($row = mysqli_fetch_assoc($result)) {
if ($i == 1) {
// this is the header
fputcsv($fp, array_keys($row));
$i++;
}
// this is the customer/order data
fputcsv($fp, $row);
}
您可以通过将c.*替换为客户字段(c.name、c.address等)和o.*替换为订单字段(o.orderid、o.date等)来指定要包含哪些数据库字段。伙计,你应该像臭鼬一样喝醉。以我为代价。你这个该死的开膛手!你帮我节省了很多时间和精力!我对JOIN语句的工作原理也很感兴趣。非常感谢你!欢迎光临。很高兴这有帮助。加入是一件很好的事情