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

时间:2018-05-18 11:01:10

标签: php mysql database insert

我要求从PHP表格中将数据插入MySQL数据库方面提供一些帮助。

我有两张桌子' item'和'属性'。字段是:

node_t(double d, node_t * n = nullptr, node_t * p = nullptr)
    : val (d), 
    next (n), 
    prev (p) 
{}

" SKU"是每个项目的ID。并且" id"是'属性中每个属性的ID。 。 表格通过SKU列连接为主/密钥。

我知道可以将数据插入到以下几个表中:

items:
SKU, name, price, type

attributes:
SKU, id, SKU, key, value

但问题是我的第二个表格'属性'内容数据作为键值对。关键词包括' size',' height',' weight' etc ...和每个维度的整数值。而我无法输入$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')";

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

1 个答案:

答案 0 :(得分:0)

有2个问题
$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')";