Я новичок в Mysqli и PHP и хочу научиться использовать объектно-ориентированный код вместо процедурного. Однако я пытаюсь преобразовать mysqli_real_escape_string объектно-ориентированным способом. В приведенном ниже коде я использовал процедурный код, потому что я не знаю, как использовать объектно-ориентированный способ, и поиски Google не предоставляют ответы, которые я ищу.mysqli объект ориентированный реальный escape строка
$sql = "SELECT email FROM `users` WHERE email = '".mysqli_real_escape_string($link, $_POST['email'])."'LIMIT 1";
$result = $link->query($sql);
if($result->num_rows > 0) {
echo "The email " .$_POST['email']. " is already taken";
} else {
echo $_POST['email'];
}
}
В реальном мире я бы иметь какое-то проверку на полях ввода, но и для обучения цели для себя, у меня нет проверки. При этом, если кто-то должен был перейти на страницу регистрации, они могли бы использовать SQL-инъекцию. Я пытаюсь предотвратить это в коде, который проверяет, существует ли адрес электронной почты. Из того, что я прочитал, mysqli_real_escape_string используется для предотвращения внедрения SQL и использования чего-то типа htmlspecialchars для предотвращения XSS. Я пытаюсь предотвратить SQL-инъекцию в этом конкретном примере.
'string mysqli :: escape_string (string $ escapestr)' http://php.net/manual/en/mysqli.real-escape-string.php 'string mysqli :: real_escape_string (строка $ escapestr)'^RTM. –
Вы также должны указать это значение '$ _POST ['email']).« LIMIT », который будет читать как« [email protected] 1 », в свою очередь, вызывая синтаксическую ошибку. Итак,' $ _POST [ 'email']). "LIMIT 1' –
Лучшим способом было бы использовать подготовленные заявления – tkausl