热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

根据刚插入的多个值生成字符串-GenerateStringbasedonmultiplevaluesjustinserted

Thisonemightbeabitcomplicated.Isearchedforsimilarquestionsandfoundnothingthatseemed

This one might be a bit complicated. I searched for similar questions and found nothing that seemed relevant.

这个可能有点复杂。我搜索了类似的问题,发现没什么看似相关的。

Let me start by establishing my database structure.

首先让我建立我的数据库结构。

I have several tables, but the relevant ones are as follows: Master Table

我有几张表,但相关的表如下:

Card Table

Deck Table

Right now I have the decklist stored as a string of cardid delimited by a comma. I realize this is inefficient and when I get around to improving my code I will make a new table tcg_card_in_deck that has relationid, cardid, deckid. For now my code assumes a decklist string.

现在我将decklist存储为由逗号分隔的cardid字符串。我意识到这是低效的,当我开始改进我的代码时,我会创建一个新的表tcg_card_in_deck,它具有relationid,cardid,deckid。现在我的代码假设一个decklist字符串。

I'm building a function to allow purchases of a deck. In order to give them the actual cards, I have the following query (generated with the PHP it will actually be about 50 entries):

我正在建立一个允许购买套牌的功能。为了给他们实际的卡片,我有以下查询(用PHP生成它实际上将是大约50个条目):

$db->query_write("INSERT INTO 
`tcg_card` 
    (masterid, userid, foil)
VALUES 
    ('159', '15', '0'),
    ('209', '15', '0'),
    ('209', '15', '0'),
    ('318', '15', '0')");

This part is easy. My issue now is making sure the cards that have just been added can have their ids grabbed and put together in an array (to enter in as a string currently, and as entries into the separate table once the code is updated). If it was one entry I could use LAST_INSERT_ID(). If I did 50 separate insert queries I could grab the id on each iteration and add them into the array. But because it's all done with one query, I don't know how to effectively find the correct cards to put in the decklist. I suppose I could add a dateline field to the cards table to specify date acquired, but that seems sloppy and it may produce flawed results if a user gets cards from a trade or a booster pack in a similar timeframe.

这部分很容易。我现在的问题是确保刚刚添加的卡可以抓取它们并将它们组合在一个数组中(以当前字符串形式输入,并在代码更新后作为条目输入到单独的表中)。如果是一个条目,我可以使用LAST_INSERT_ID()。如果我做了50个单独的插入查询,我可以在每次迭代时获取id并将它们添加到数组中。但由于这一切都是通过一个查询完成的,我不知道如何有效地找到正确的卡片放入套牌清单。我想我可以在卡片表中添加一个日期行字段来指定获得的日期,但这看起来很草率,如果用户在相似的时间范围内从交易或助推器包中获得卡片,则可能会产生有缺陷的结果。

Any advice would be appreciated!

任何意见,将不胜感激!

2 个解决方案

#1


0  

Change tcg_card by removing cardid, and make masterid and userid a compound key. Then, add a row called quantity. Since you cannot distinguish between two copies of a card in any meaningful way (except for being foils, which you could handle with this schema), there is no need for every card to get its own ID.

通过删除cardid更改tcg_card,并使masterid和userid成为复合键。然后,添加一个名为quantity的行。由于您无法以任何有意义的方式区分卡片的两个副本(除了您可以使用此架构处理的箔片),因此不需要每张卡片都能获得自己的ID。

Presumably you aren't entering new tcg_master rows dynamically, so you don't have to worry about pulling their IDs back out.

据推测,您没有动态输入新的tcg_master行,因此您不必担心将其ID撤回。

#2


0  

Reading comments on this question I thought of a very simple and easy solution: Get all inserted IDs when inserting multiple rows using a single query

阅读关于这个问题的评论我想到了一个非常简单易用的解决方案:使用单个查询插入多行时获取所有插入的ID

I already track booster pack purchases with a table tcg_history. This table can also track other types of purchases, such as a starter deck.

我已经用表tcg_history跟踪了助推器购买。该表还可以跟踪其他类型的购买,例如入门牌。

I simply need to add a field on the tcg_card table that references a tcg_history.recordid, then I will be able to select all cards that are from that purchase.

我只需要在tcg_card表上添加一个引用tcg_history.recordid的字段,然后我就可以选择所有来自该购买的卡片。


推荐阅读
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
author-avatar
小文662502914775
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有