Я использую mysqli_real_escape_string()
функцию для предотвращения SQl Injection. Мой код
<?php
// open a connection
$dhost = 'localhost';
$duser = 'user';
$dpw = 'pass';
$dname = 'db_name';
$connection = mysqli_connect($dhost, $duser, $dpw, $dname);
// test the connection
if(mysqli_connect_errno()){
die('Something went wrong with the database<br><br> '
. mysqli_connect_error() . ':'
. mysqli_connect_errno());
}
$query = "Isn't it nice that we don't have to escape ' characters all by ourselves?";
echo $query.'<br>';
$escaped = mysqli_real_escape_string($connection , $query);
echo $escaped.'<br>';
mysqli_query($connection,"INSERT into emp (name) VALUES ('$escaped')");
mysqli_close($connection);
?>
, когда я печатаю переменную $ escaped, она выдает примерно такие данные:
Разве это не приятно, чтомы не должны экранировать символы сами по себе?
Но когда я увидел поле базы данных, я обнаружил это:
Разве это не приятно, что нам не нужносами убегаем от "персонажей"?