簡體   English   中英

PHP mysqli_real_escape_string問題

[英]PHP mysqli_real_escape_string problems

我有幾個post變量,我通過以下方式運行:

$input_name =  mysqli_real_escape_string($dbc, trim($_POST['input_name']));

我已經運行了幾個測試,我在插入查詢執行之前回顯$ input_name和其他類似的變量。 回聲表明他們確實正在逃避它們應該。

但是,當我登錄phpmyadmin查看數據庫中的條目時,我發現應該轉義的字符不是。 我這里有問題嗎? 在我的變量聲明和我不知道的查詢之間發生了什么?

有沒有可能影響這個的PHP或服務器設置?

注意:我意識到PDO是要走的路,我不是在這個特定的時刻。

PHP中的* _real_escape_string函數僅用於防止SQL注入,因此它只會更改為“to”和“to”以便以下查詢:

SELECT * FROM users WHERE pass = '' OR '1'='1 --

會變成:

SELECT * FROM users WHERE pass = '\' OR \'1\'=\'1 --

這樣注入的值就不起作用了。

回聲表明他們確實正在逃避它們應該。

這表示您的角色已轉義。

當我登錄phpmyadmin查看數據庫中的條目時,我發現應該轉義的字符不是

現在,因為你正在逃避意味着你想要那些字符而不是PHP或你的數據庫將它們作為分隔符在內部。

如果你想要像'在你的輸入,因為它是讓你在逃避它。 所以現在當數據庫(mysql)看到它被轉義時,它不會被視為用於MySQL中的字符串文字的single quote

如果你沒有逃避它,那么MySQL將把兩個'之間的所有部分視為字符串文字。

所以一切都很好,不要擔心。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM