我試圖寫一個查詢使用通過URL傳遞的變量,問題是,很多項目名稱包含字符像'或+,他們沒有沒有通過URL正確傳遞,並且那些特殊字符被忽略(儘管我檢查並且看不到它們被保留)。無論如何,爲了解決這個問題,我使用了PHP函數rawurlencode()和rawurldecode()來傳遞該值作爲編碼字符串,並且在接收端,我使用該函數解碼字符串。這工作,並給了我,我需要但在數據庫中搜索,寫作時我查詢,像這樣的值:如果字符串包含',替換爲SQL查詢
$name = rawurldecode($_GET["name"]);
$sql = "SELECT name, address, phone_number, hours_weekday, hours_weekend, description, email, food, pool, tv, dancing, late
FROM pubs WHERE name LIKE '" . $name . "'";
如果名稱是像美的,在'後,爲什麼作爲結束動作在聲明中的字符串,所以我想要做的是,如果該字符串包含字符'然後用\'替換它以轉義它。有誰知道如何做到這一點,或者如果有可能?
謝謝!
請不要這樣做。永遠。使用參數。 –
@NiettheDarkAbsol我將使用準備好的語句和綁定參數,我只是在本地測試一些東西 – coopwatts
要添加到Niet的評論(爲了未來的讀者),您不想這樣做的原因是SQL注入攻擊。假設你網站上的惡意用戶輸入'; drop table pubs; - '作爲他的名字。結果不會很漂亮。 –