繁体   English   中英

在mysql中使用prepared-statement插入查询?

[英]Insert query using prepared-statement in mysql?

我有一个这样的存储过程:

SET @query = CONCAT('insert into tblcommodity (id , idname , count)values (',p1, p2,p3,')');
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

但是当我想运行它时,它有这个错误:

> Procedure execution failed 1136 - Column count doesn't match value
> count at row 1

另一件事是,当我运行插入代码时,它运行!

请帮助我。

尽管如此,你所采用的方式有点违背准备好的陈述的全部目的。 我会改用这个表格:

SET @query = 'INSERT INTO tblcommodity (id, idname, count) VALUES (?, ?, ?)';
PREPARE stmt FROM @query;
EXECUTE stmt USING @p1, @p2, @p3;

它应该是

SET @query = CONCAT('insert into tblcommodity (id , idname , count)values (',',',p1,',', p2,',',p3,')');

尝试这个:

SET @query = CONCAT("insert into tblcommodity (id , idname , count) values (", p1, ", '", p2,"',",p3,")"); 
PREPARE stmt FROM @query; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt;

BTW,您的代码:

SET @query = CONCAT('insert into tblcommodity (id , idname , count)values (',p1, p2,p3,')');

有一个起始逗号:

    ,p1,p2,p3  

它表示声明中的四个字段。 这就是为什么你得到“列数与值不匹配”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM