2011-04-30 39 views
1

有人可以解釋在字符串上使用mysql_real_escape_string或在列周圍環繞「``」之間的區別。如何通過PHP和mysql正確地轉義字符串

例如"insert into table (``column``) values ('$string')"

$escapestring = mysql_real_escape_string($string); 
"insert into table (column) values ('$escapedstring')" 

是什麼這兩個問題,我應該用區別?謝謝。

+4

你應該可能既不使用也不使用。使用綁定參數。這是最安全的方式。 http://use-the-index-luke.com/sql/where-clause/bind-parameters?langtype=php – 2011-04-30 07:25:38

+0

[我怎樣才能防止PHP中的SQL注入?](http:// stackoverflow。 COM /問題/ 60174 /如何-可以-I-防止-SQL注入式的PHP) – Kzqai 2016-09-07 01:34:24

回答

-1

這兩個是不是在所有相關的(據我所知反正)

從手冊:http://php.net/manual/en/function.mysql-real-escape-string.php

逃逸的 unescaped_string特殊字符,並考慮到 當前字符集的 連接,以便將它安全地放置在mysql_query()中,將它放置爲 。

所以基本上它是什麼,它會逃跑是不安全去到MySQL查詢(也可能會破壞或malform查詢)字符

所以o'reily將成爲o\'reily

2

有區別backtick`和單引號'之間。

反標意在逃避可能與MySQL保留字衝突的表和字段名稱。如果我有一個名爲date領域,像SELECT date FROM mytable查詢我需要逃避使用date這樣當MySQL的解析查詢時,它會解釋我使用date作爲而非數據類型date

單引號'用於文字值,如SELECT * FROM mytable WHERE somefield='somevalue'。如果somevalue本身包含單引號,則需要轉義它們以防止過早關閉引用文字。