2014-05-20 148 views
0

我的問題很容易解釋:在我的pure-ftp配置文件中,只有一個INSERT語句允許讀取密碼。它是這樣的:在選擇語句中更新mysql

SELECT password FROM ftpuser WHERE userid = "\L" 

「\ L」是用戶標識的佔位符。它完美的工作,但我需要計數訪問FTP服務器。該表中有一個名爲「訪問」的字段。所以,我需要運行該SQL,太:

UPDATE ftpuser SET accessed = accessed + 1 WHERE userid = "\L" 

有什麼辦法把這個兩個語句來一個,用「密碼」的結果呢?或者還有另一種方式來觸發純FTP的訪問,也許?非常感謝你!

塞巴斯蒂安

+1

請編輯您的問題以顯示樣本數據和您想要的結果。但是,通常情況下,您無法更新數據*和*返回值。這是不同的功能。 –

+0

這個想法是,我嘗試給pure-ftp函數來記錄用於登錄數據的mysql中的最後一次訪問。唯一的方法就是將日誌更新引入選擇語句,在這個語句中用戶密碼被獲得。這兩個語句只是佔位符,他們可以完成其他語句。但似乎沒有辦法「連接」更新並選擇像我想做的那樣 – user3656400

回答

1

如果它是保持原子,然後提供你的表使用事務引擎(例如InnoDB的)存儲的問題,你可以用整個事情在一個事務中具有locking read

START TRANSACTION; 
SELECT password FROM ftpuser WHERE userid = '\L' FOR UPDATE; 
UPDATE ftpuser SET accessed = accessed + 1 WHERE userid = '\L'; 
COMMIT; 
+0

確實需要FOR UPDATE嗎? 'UPDATE'語句將放置自己的鎖,並且'SELECT'不會有任何併發​​問題。 –

+0

@MarcusAdams:它不是依賴於業務邏輯嗎?例如,如果'password'在'password'改變時被重置... – eggyal