首页 > 解决方案 > 如何将一个表的每次迭代的 id 插入另一个表

问题描述

我有三张桌子票和测试票,项目。在票证中,我插入了具有两个日期的数据并且具有不同的 ID,例如

TICKET TABLE (DATA INSERT)

ID      DATE

1     2019-08-01

2     2019-08-08
ITEM TABLE

items_id | item type

1        | Cmputer

2        | Computer1

这两个表都很好,但是在testticket表中我希望当我在票表的每个 id 上的 TICKET 表中插入数据时,应该有数据testticket

例如,数据应该是这样的。

Test ticket table

ID     | DATE        |ticketid  |itenname

1     2019-08-01     |  1        |Computer

2     2019-08-08     |  2        |Computer    

3     2019-08-01     |  1        |Computer1

4     2019-08-08     |  2        |Computer1

但是当我使用此代码时,它ticketid在所有测试票记录中显示为 1

$sql="select * from items";
$result = mysqli_query($GLOBALS['conn'] ,$sql );
$dates = splitDates($min, $max,$parts);

foreach ($dates as $value) {
  $date= "$value";
    $sql1="insert into tickets (date) values('$date')";
 if ($GLOBALS['conn']->query($sql1) === TRUE) {

 $last_id = $GLOBALS['conn']->insert_id;


    while($row = mysqli_fetch_array($result)){ 

   foreach ($dates as $value) {
    // $i++;
    $name= $row['itemtype'];
    $date= "$value";
    $sql="insert into glpi_testticket (name,date,tid) 
   values('$name','$date','$last_id')";

    $query3 = mysqli_query($GLOBALS['conn'],$sql ) or 
    die(mysqli_error($GLOBALS['conn']));
    }
  }
 }
}

标签: phpmysql

解决方案


考虑以下:

DROP TABLE IF EXISTS ticket;
CREATE TABLE ticket
(ticket_id SERIAL PRIMARY KEY
,date DATE NOT NULL
);

INSERT INTO ticket VALUES
(1,'2019-08-01'),
(2,'2019-08-08');

DROP TABLE IF EXISTS item;
CREATE TABLE item
(item_id SERIAL PRIMARY KEY
,item_type VARCHAR(12) NOT NULL UNIQUE
);

INSERT INTO item VALUES
(1,'Computer'),
(2,'Computer1');

SELECT * FROM ticket;
+-----------+------------+
| ticket_id | date       |
+-----------+------------+
|         1 | 2019-08-01 |
|         2 | 2019-08-08 |
+-----------+------------+
2 rows in set (0.00 sec)

SELECT * FROM item;
+---------+-----------+
| item_id | item_type |
+---------+-----------+
|       1 | Computer  |
|       2 | Computer1 |
+---------+-----------+
2 rows in set (0.00 sec)

SELECT * FROM ticket,item;
+-----------+------------+---------+-----------+
| ticket_id | date       | item_id | item_type |
+-----------+------------+---------+-----------+
|         1 | 2019-08-01 |       1 | Computer  |
|         2 | 2019-08-08 |       1 | Computer  |
|         1 | 2019-08-01 |       2 | Computer1 |
|         2 | 2019-08-08 |       2 | Computer1 |
+-----------+------------+---------+-----------+

在这个结果的产生过程中,只有一个 SELECT 受到损害。它也可以是一个 INSERT。


推荐阅读