2015-11-09 68 views
-3

我試圖寫一個查詢使用通過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 . "'"; 

如果名稱是像美的,在'後,爲什麼作爲結束動作在聲明中的字符串,所以我想要做的是,如果該字符串包含字符'然後用\'替換它以轉義它。有誰知道如何做到這一點,或者如果有可能?

謝謝!

+1

請不要這樣做。永遠。使用參數。 –

+0

@NiettheDarkAbsol我將使用準備好的語句和綁定參數,我只是在本地測試一些東西 – coopwatts

+0

要添加到Niet的評論(爲了未來的讀者),您不想這樣做的原因是SQL注入攻擊。假設你網站上的惡意用戶輸入'; drop table pubs; - '作爲他的名字。結果不會很漂亮。 –

回答

1

假設你mysqli的連接稱爲$mysqli,然後

$name = $mysqli->real_escape_string($name); 

加入$name到您的SQL查詢字符串之前。

+0

工程就像一個魅力。謝謝 – coopwatts