內的單引號我有一個表companies
,其中有一個名爲name
和address
兩列。通過運行下面的代碼,新的數據被插入到表:擺脫SQL查詢
my_name = "my company name"
my_address = "ABC"
query = "INSERT INTO companies (name,address) VALUES ('#{my_name}','#{my_address}');"
ActiveRecord::Base.connection.execute(query);
如果我改變從"my company name"
到"John's company"
my_name
價值,我會得到一個語法錯誤。這是因爲查詢變爲:
"INSERT INTO companies (name,address) VALUES ('John's company','ABC');"
和'John's company'
中有一個單引號。
既然我已經用於查詢字符串定義雙引號,我怎樣才能得到關於我的價值,單引號去掉這個錯誤的?
用\ \轉義它。 – rgin
if my_name.include?('\'')my_name.sub(/'/,'\'')? –
這是一個非常糟糕的主意......即使您使用反斜槓轉義單引號,您也會冒SQL注入攻擊的風險。你需要理解字符編碼,但是這種天真的方法有一個嚴重的(已知的)漏洞。在查詢中使用綁定參數並允許DBMS安全地傳輸值。 – d11wtq