【发布时间】:2014-02-03 22:44:45
【问题描述】:
我对食谱很感兴趣,
recipe->recipecomponent
如果我插入一个带有配料的食谱,我会在食谱和成分表上都插入,然后将两者的 id 插入到中间表中。
所以中间表有 2 个 col,它们是表的外键和 PK 到其他 2 个 Auto Increment int 类型的表。
现在的问题是,如果我插入包含 2 种成分的配方,因为我会在组件上插入 2 行,这意味着我需要将 2 个 id 从组件插入到配方组件中。
例如。
说,我刚刚插入了一个包含 2 种成分的食谱,
当我在配方中插入时,id 是 1(AI,INT)。 因为它有 2 种成分,我将 2 插入到组件中。 那么应该有 1(AI,INT) 和 2(AI,INT)。
然后我必须将这些 ids(它们是 2 个表的 PK)作为 FK 插入到中间表中。
预期的行将在 recipecomponent 表上
recipeid - 组件id
1 || 1 2
如何插入组件 ID。我用数组插入它吗?
$insert_row = array('recipeid'=>$recipeid,'componentid'=>componentids);
假设 componentids 是一个数组,包含来自组件表的 1,2 个 id。
这没问题,但是当您尝试插入时。它将在值中显示为 ARRAY,这会发出错误
严重性:通知
消息:数组到字符串的转换
文件名:mysqli/mysqli_driver.php
行号:553
和
错误号:1054
“字段列表”中的未知列“数组”
插入
recipecomponent(recipeid,componentid)值(1, 数组)文件名:C:\www\KG\system\database\DB_driver.php
行号:330
虽然我找到了解决方案,但我使用 implode 将其转换为字符串
$new_component_id = implode(' ',$componentid);
但是由于它现在是一个字符串“1 2”,当我将它插入到 int 类型的列中时,它只在行中显示第一个数字,即 1。
我考虑过单独插入。这对于只有 2 种成分的食谱来说没有问题。
会是这样的:
recipeid - 组件id
1 || 1
1 || 2
但假设我插入了一个包含至少 4 种成分的食谱,还有更多要插入的成分。会不会浪费内存?
如果是这样,我在想是否有任何字符被视为整数但被接受为要插入的值,例如假设字符 -
所以当我插入字符串 1-2 时,它会在我的 col 上显示为 1-2,这是一个 int 类型。
我需要一些专业的帮助和建议。
【问题讨论】:
-
附加信息,我要求一个字符的最后一部分是因为我怀疑它被空格字符切断,所以没有包括 2。但是如果我切断空间,我将无法确定插入的 id。它现在看起来像 12,而不是 1 2 id。这是一个问题。
标签: database string insert int