在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

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

plz帮助我。

有了所有应有的尊重,您的做法却打败了准备的语句的全部目的。我会使用此表格:

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  

这意味着语句中的四个字段。这就是为什么您获得"列计数不匹配值"

最新更新