First of all, this code is wrong.
It has wrong meaning and wrong name.
No SQL data preparation code does any cleaning or sanitization.
It does merely escaping. And this escaping must be unconditional.
and escaping shouldn't be mixed with anything else.
Yani, üç ayrı fonksiyonları, biri olmalıdır.
- Sihirli tırnak kurtulmak. Veri girişi ayrı ayrı yapılmalıdır.
- isterseniz kırpın. Sadece metin beautifier, öyle kritik bir fonksiyon.
- SQL sorgusu için veri hazırlamak için () mysql_real_escape_string.
Yani, burada sadece mysql ile ilgili fonksiyon) (mysql_real_escape_string edilir. Hiçbir veri yapar rağmen "temiz", ancak sadece ayraçları önceleme. Bu nedenle, bu fonksiyon only, bir dizge olarak kabul hangi veri ile ve tırnak içinde kullanılmalıdır. Yani, bu iyi bir örnektir:
$num=6;
$string='name';
$num=mysql_real_escape_string($num);
$string=mysql_real_escape_string($string);
$query="SELECT * FROM table WHERE name='$name' AND num='$num'";
Bu örnek, yanlış ise:
$num=6;
$string='name';
$num=mysql_real_escape_string($num);
$string=mysql_real_escape_string($string);
$query2="SELECT * FROM table WHERE name='$name' AND num=$num";
$ Query2 bir sözdizimi hatası atmak olmazdı olsa bile, bu yanlış veri hazırlama ve mysql_real_escape_string burada hiçbir şey yardımcı olacaktır olduğunu. Yani, bu işlevi bir dize olarak tedavi verileri kaçmak için sadece kullanılabilir. herhangi bir veri türü için yapılabilir olsa da, bir dize olarak tedavi edilemez gibi LİMİT parametreleri gibi bazı istisnalar vardır.