存储过程中的单引号更新MYSQL

时间:2014-12-02 14:31:10

标签: mysql web-services stored-procedures sql-update

我正在尝试使用来自Web服务的数据使用存储过程进行简单更新,但由于单个引号未在存储过程中被识别,因此未能在“字段列表”中显示未知列'USERNAME'。

BEGIN
UPDATE PYBUsers set IsMember = 1 where user = p_user;
END

正如您所看到的那样,提供了p_user但Web服务并没有单引号,因此被拒绝。我也试过

SET @query = CONCAT('UPDATE PYBUsers set IsMember = 1 where user = \'', p_user, '''');

SET @query = CONCAT('UPDATE PYBUsers set IsMember = 1 where user = ', "'",p_user,"'");
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt

但没有运气。我有一个简单的解决方案吗?

1 个答案:

答案 0 :(得分:0)

尝试

SET @query = CONCAT('UPDATE PYBUsers set IsMember = 1 where user = ''',p_user,'''');
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt

要在字符串中添加单引号,您必须将两个单引号放在一起,即 “这是丹的字符串;在n和s之间插入单引号

'' '';这个看起来有点尴尬,但是这里有。第一个引号打开字符串,接下来的两个引号在字符串中生成单引号。最后的报价关闭字符串。

INSERT INTO myTable values ('''')

以上将导致一个引用存储在表