2014-12-02 52 views
0

我正在嘗試使用存儲過程使用來自Web服務的數據的簡單更新,但由於單引號未被識別而導致未知列'USERNAME'在'字段列表'中失敗在存儲過程中。存儲過程中的單引號更新MYSQL

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 

,但沒有運氣。有沒有簡單的解決方案,我錯過了?

+0

嘗試SET @query = CONCAT( 'UPDATE PYBUsers設置IsMember = 1,其中用戶= ''',p_user, '' '') ; - ''給出單引號字符。 – Giles 2014-12-02 15:04:44

+0

不幸的是,這並沒有起作用,同樣的錯誤,並且在運行後刪除了「從各方面來的一個」。 – 2014-12-02 16:03:48

回答

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 ('''') 

上面將導致一個報價被存儲在表中