Php 在PDO中组合两个MySQL表并创建CSV输出
新来的。我会尽力把这个问题说得尽可能清楚 我正在建立一个订单数据库,在该数据库中我有两个表 表1(订单)有以下列:Php 在PDO中组合两个MySQL表并创建CSV输出,php,mysql,pdo,Php,Mysql,Pdo,新来的。我会尽力把这个问题说得尽可能清楚 我正在建立一个订单数据库,在该数据库中我有两个表 表1(订单)有以下列: id, name, datetime id, orderid, itemname, price 表2(订购项目)有以下列: id, name, datetime id, orderid, itemname, price 表2中的orderid是表1中的id 我需要运行一个MySQL查询,输出如下所示的数组: orderid、datetime、name、itemname、pr
id, name, datetime
id, orderid, itemname, price
表2(订购项目)有以下列:
id, name, datetime
id, orderid, itemname, price
表2中的orderid
是表1中的id
我需要运行一个MySQL查询,输出如下所示的数组:
orderid、datetime、name、itemname、price
以下是我选择订单的方式:
$date1 = "2020-09-29"; //$_GET["date1"];
$date2 = "2020-09-30"; //$_GET["date2"];
include 'dbconfig.php';
$pdo = new PDO("mysql:charset=utf8mb4;host=$servername;dbname=$dbname", $username, $password);
$pdo = $pdo->prepare("SELECT id, name datetime FROM orders WHERE datetime BETWEEN :date1 AND :date2");
$pdo->execute(['date1' => $date1,
'date2' => $date2]);
while ($row = $pdo->fetch()) {
$data[] = $row;
}
这就是我选择订单项目的方式:
$sql = "SELECT orderid, itemname, price FROM orderitems WHERE orderid=:id";
如何组合它们并使它们以我想要的方式导出数组?您已经可以在SQL中执行联接,只需向数据库发送一个查询,而不是一个查询订单,然后每个查询一个查询订单详细信息。那要快得多。该问题将是:
SELECT o.id orderid,
o.datetime,
o.name,
oi.itemname,
oi.price
FROM orders o
INNER JOIN ordered oi
ON oi.orderid = o.id
WHERE o.datetime >= :date1
AND o.datetime < :date2;
选择o.id orderid,
o、 日期时间,
o、 名字,
oi.itemname,
价格
从命令
内连接有序oi
在oi.orderid=o.id上
其中o.datetime>=:date1
和o.datetime<:date2;
对于时间戳范围,不要在之间使用。如果上限为2020-09-30,则只能获得2020-09-30 00:00:00.000的记录。但你会错过2020-09-30 01:01:00.000,例如。使用