Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在PDO中组合两个MySQL表并创建CSV输出_Php_Mysql_Pdo - Fatal编程技术网

Php 在PDO中组合两个MySQL表并创建CSV输出

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

新来的。我会尽力把这个问题说得尽可能清楚

我正在建立一个订单数据库,在该数据库中我有两个表

表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、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,例如。使用