php - 如何将一个表的每次迭代的 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']));
}
}
}
}
解决方案
考虑以下:
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。
推荐阅读
- python - 如何修复用于验证外部文件的代码?
- html - 如何在 html 静态页面中使用材质图形元素?
- c# - C#查找字符串中间字符的最佳方法
- swift - SwiftUI - 具有多个核心数据实体的本地通知标识符
- python - RuntimeError:未找到最佳参数:函数调用次数已达到 maxfev=600
- reactjs - React table - 在手动分页中强制重置页面索引
- database - 将列与postgressql中的文本数组进行比较
- ruby-on-rails - 活动记录模型的翻译
- javascript - 使用本机消息在 Chrome 中的 NTLM 弹出窗口中填写用户名和密码
- excel - 通过选择文件夹按名称删除多个工作簿