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 - 将数据作为键值对插入两个表中的主要内容,如果未能解决你的问题,请参考以下文章