将数据作为键值对插入到两个表中

wnavrhmk  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(317)

我请求一些帮助,关于从php表单向mysql数据库插入数据。
我有两个表“items”和“attributes”。字段包括:

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')";

但问题是,我的第二个表“attributes”以键值对的形式包含数据。像“尺寸”、“高度”、“重量”等键。。。每个维度的值都是整数。我不能只是打字 INSERT INTO attributes (SKU, key, value) VALUES ('$SKU', '$size', '$height' ... etc) 如何将数据作为键值对插入表中?我需要插入数据的大小,高度,宽度,长度,重量。它们在表单中都有自己的输入字段。我想从这个表单中提取数据并插入到表中-项和属性。
到目前为止,我已经成功地将数据插入“items”中,如下所示:

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

但我无法接触“属性”表。这个代码不起作用。我尝试插入“size”只是为了检查这种方法是否有效:

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

我们会感激你的帮助。提前谢谢!

cwtwac6a

cwtwac6a1#

有两个问题

$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')";

相关问题