mysql - 更新程序 输入参数中的列不正确/未知

标签 mysql procedure

我有一个输入参数错误,但我不知道为什么:

0   14:31:47    call UpdateComment(66,1,2,"NOWYTitle","NOWYContent")    Error Code: 1054. Unknown column 'NOWYTitle' in 'field list'

调用过程:

call UpdateComment(66,1,2,"NOWYTitle","NOWYContent");

我的程序:

DELIMITER $$
DROP PROCEDURE IF EXISTS UpdateComment $$
CREATE PROCEDURE `UpdateComment`(UserId INT,/*Crc32 int(11) unsigned,*/ArticleId int(11),CommentsId int(11), newTitle varchar(255), newContent varchar(255))
BEGIN

        DECLARE helpUserTable varchar(255);

        set helpUserTable = CONCAT("User",UserId);

        set @score1 =CONCAT("UPDATE `",helpUserTable,"` SET Title = ",newTitle," WHERE CommentsId = ",CommentsId," AND ArticleId = ",ArticleId);
        PREPARE stmt FROM @score1;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;
        set @score2 =CONCAT("UPDATE `",helpUserTable,"` SET Content = ",newContent," WHERE CommentsId = ",CommentsId," AND ArticleId = ",ArticleId);
        PREPARE stmt FROM @score2;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;

END

最佳答案

首先,您需要在命令中的文本值周围添加引号,其次您的 SQL 语句可以合并为一个语句(它们共享相同的 where 子句):

试试这个:

    set @score1 = CONCAT("UPDATE `", helpUserTable, "` SET Title = '", newTitle, 
        "', Content = '", newContent, "' WHERE CommentsId = ", 
        CommentsId, " AND ArticleId = ", ArticleId);

并完全删除@score2

关于mysql - 更新程序 输入参数中的列不正确/未知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12037755/

相关文章:

mysql - 声明 mariaDB 错误。如何解决这个查询?

oracle - PL SQL - 返回 SQLCODE 作为 OUT 参数是否被接受?

jquery - 在html中存储表名和列名

mysql - 子表中删除级联查询不成功

mysql - 当mysql有两列时,我如何找到所有重复的条目?

c# - 如何在小巧玲珑中返回原始数据类型的元组

parameters - 使用参数执行存储过程

oracle - 为什么不能执行SCHEMA_NAME.PACKAGE_NAME.PROCEDURE,Oracle

rename - 如何重命名 protected 对象条目

mysql - 为什么我不能删除 MySQL 数据库?