我正在製作一個簡單的Web界面,以允許對數據庫執行查詢(是的,我知道,我知道這是一個非常糟糕的做法,但它是一個只由少數可信任的私人網站使用用戶目前直接使用數據庫管理器來執行這些查詢,因此Web界面只是爲了使流程更加自動化)。將UPDATE轉換爲SELECT
問題是,爲了安全起見,無論何時檢測到UPDATE查詢,我想先執行一條SELECT語句「等同於」更新(保留WHERE子句)以檢索在執行之前會影響多少條記錄更新。
這個想法是用「SELECT * FROM」替換「UPDATE」,並刪除整個「SET」子句而不刪除「WHERE」。
我想更換UPDATE\s*(.*?)\s*SET.*(\s*WHERE\s*.*)
SELECT * FROM \1 \2
和類似的,但我沒有「WHERE」條款(不常見,但可能)時有麻煩。
編輯:很難解釋爲什麼我需要這樣做,但我知道存儲過程,查詢構建器,事務等等......但對於我的情況,這不是我需要能夠做到。
您需要完整的SQL語法(考慮包含WHERE,SET等的字符串值......) – jarlh
您可以改爲開始事務,執行更新(並捕獲元數據),然後執行回滾。 – Turophile