Php,MySql - 将数据作为键值对插入两个表中

Posted

技术标签:

【中文标题】Php,MySql - 将数据作为键值对插入两个表中【英文标题】:Php, MySql - insert data into two tables as key-value pair 【发布时间】:2018-10-28 19:26:05 【问题描述】:

我正在寻求一些有关从 php 表单将数据插入 mysql 数据库的帮助。

我有两个表“项目”和“属性”。这些字段是:

items:
SKU, name, price, type

attributes:
SKU, id, SKU, key, value

“SKU”是每件商品的 ID。 “id”是 'attributes' 中每个属性的 ID。 表通过 SKU 列作为主键/次键连接。

我知道可以像这样将数据插入多个表中:

$sql = "INSERT INTO items (column1, column2, column3) VALUES ('value1', 'value2', 'value3');
        INSERT INTO attributes (column1, column2, column3) VALUES ('value1', 'value2', 'value3')";

但问题是我的第二个表将内容数据“属性”为键值对。像“大小”、“高度”、“重量”等键......以及每个维度的整数等值。而且我不能只输入INSERT INTO attributes (SKU, key, value) VALUES ('$SKU', '$size', '$height' ... etc)

如何将数据作为键值对插入表中?我需要插入尺寸、高度、宽度、长度、重量的数据。他们每个人在表单中都有自己的输入字段。我想从此表单中提取数据并插入到表中 - 项目和属性。

到目前为止,我已经成功地将数据插入到这样的“项目”中:

$sql = "INSERT INTO items (SKU, name, price) VALUES ('$SKU', '$name', '$price')";

但我无法访问“属性”表。此代码不起作用。我试图插入“大小”只是为了检查这种方式是否有效:

$sql = "INSERT INTO attributes (SKU, key, value) VALUES ('$SKU', 'size', '$size') ON items.SKU = attributes.SKU";

我们将不胜感激。提前谢谢!

【问题讨论】:

【参考方案1】:

有两个问题

$sql = "INSERT INTO attributes (SKU, key, value) VALUES ('$SKU', 'size', '$size') ON items.SKU = attributes.SKU";

1)ON items.SKU = attributes.SKU这个语法不正确,不需要。

2) 您正在使用保留关键字“key”作为列名。为此,您需要将其括在反引号 (`) 中

这个 sql 应该可以工作:

$sql = "INSERT INTO attributes (SKU, `key`, value) VALUES ('$SKU', 'size', '$size')";

如果要插入多个属性,可以这样:

$sql = "INSERT INTO attributes (SKU, `key`, value) VALUES
    ('$SKU', 'size', '$size'),
    ('$SKU', 'height', '$height'),
    ('$SKU', 'weight', '$weight')";

【讨论】:

以上是关于Php,MySql - 将数据作为键值对插入两个表中的主要内容,如果未能解决你的问题,请参考以下文章

如何在php中的数组中插入新的键值对?

插入键值对后在搜索树中增加值

如何使用 php/laravel 在现有数组对象中插入键值对?

将 1 行表展平为键值对表

如何使用 PHP 插入或更新外键值

MySQL帮助:将数据插入两个表[关闭]