Mysql 存储过程CONCAT()错误代码1054,未知列

Mysql 存储过程CONCAT()错误代码1054,未知列,mysql,insert,procedure,concat,Mysql,Insert,Procedure,Concat,提前谢谢你的帮助。你们太棒了 存储过程中的CONCAT()有问题。正在尝试使用变量创建插入 错误代码1054,字段列表中的未知列“Milk” Milk是要插入的值,而不是列 代码如下: SET @s = CONCAT('insert into ',USR,' (Product, ProdId, ListName) VALUES (',food_name,',',PRODID,',',LISTID,')'); 您需要引用食品名称的值: SET @s = CONCAT('insert into '

提前谢谢你的帮助。你们太棒了

存储过程中的CONCAT()有问题。正在尝试使用变量创建插入

错误代码1054,字段列表中的未知列“Milk”

Milk是要插入的值,而不是列

代码如下:

SET @s = CONCAT('insert into ',USR,' (Product, ProdId, ListName) VALUES (',food_name,',',PRODID,',',LISTID,')');

您需要引用
食品名称的值

SET @s = CONCAT('insert into ',USR,' (Product, ProdId, ListName) VALUES (\'',food_name,'\',',PRODID,',',LISTID,')');
实际上,MySQL将看到未加引号的值
Milk
,并假定它是一个列名而不是字符串文本

如果列表中的其他列也是字符类型,则也需要对这些列执行相同的操作。例如,假设
ListName
也是一种字符类型,您的过程将是:

SET @s = CONCAT(
    'insert into ',
    USR,
    ' (Product, ProdId, ListName) VALUES (\'',
    food_name,
    '\',',
    PRODID,
    ',\'',
    LISTID,
    '\')'
);

好的,谢谢。PRODID和LISTID是INT类型。此外,还需要插入其他值。由于这方面的问题太长时间了,我尽可能地剪切了CONTAT()。到目前为止还不错……您的编辑工作正常。我将按照您建议的方式添加其他字段。非常感谢你!不客气,所有的逗号和引号很快就会让人困惑:-)