Я пытаюсь преобразовать свой код из MySQL в MySQLi. Я пытаюсь защитить от SQL-инъекции. Я научился не использовать pre_replace. Я пробовал разные параметры, как указано в моем коде ниже. Единственный другой вариант, который, похоже, работает, - это строка кода, в которой есть mysql_escape_string ниже. Я пробовал mysql_real_escape_string и $ db-> real_escape_string, как указано ниже. Однако это приводит к тому, что веб-сайт перестает функционировать вместе. Однако я не получаю сообщение об ошибке. Мне было интересно, почему первая строка кода для $ FName работает, и следующие две строки кода не будут работать. Я потратил около 2 часов, пытаясь все, что мог придумать. Извините, если этот вопрос является основным, но я не могу найти ответ. Любая помощь будет оценена по достоинству.Функция mysql_real_escape_string не работает
<?php require "connect.php"; ?>
<?php
if(isset($_POST['Register'])) {
session_start();
$FName = mysql_escape_string($_POST['FirstName']);
$LName = mysql_real_escape_string($_POST['LastName']);
$Email = $db->real_escape_string($_POST['Email']);
$UName = preg_replace('#[^A-Za-z0-9]#i', '', $_POST ["UserName"]);
$PW = preg_replace('#[^A-Za-z0-9]#i', '', $_POST ["Password"]);
$sql = $con->query("INSERT INTO BD (FirstName, LastName, Email, UserName, Password) Values('{$FName}', '{$LName}', '{$Email}', '{$UName}','{$PW}')");
header('Location: login.php');
}
>
Дополнительная информация о вашем соединении необходима. Является ли '$ db' фактически объектом соединения MySQLi? Что имеется в 'connect.php'? –
'mysql_real_escape_string()' будет работать только при активном подключении к базе данных. Наконец, если ваш код ничего не делает, он предполагает, что у вас нет 'display_errors'. Всегда при разработке и тестировании кода в верхней части вашего скрипта: 'error_reporting (E_ALL); ini_set ('display_errors', 1); 'и отключить' display_errors' снова в вашем живом коде. –
Горе 'mysql_escape_string()' работает, когда соединение с базой данных не создано, что объясняет, что один работает. Так что это действительно так, чтобы проверить, что любое соединение, которое вы пытались сделать в 'connection.php', является допустимым объектом MySQLi. –