Предотвращение внедрения SQL на странице входа в PHP

У меня есть страница входа ( login.php ), а ниже – код, который я пытаюсь использовать для аутентификации пользователя с помощью mysqli_prepare :

 if(!$_POST["username"] || !$_POST["password"]) { echo "Username and Password fields are mandatory."; } else { $unsafe_username = $_POST["username"]; $unsafe_password = md5($_POST["password"]); $query=mysqli_prepare($con, "select user_id from users where user_name= ? and password= ? "); $query->bind_param("ss", $unsafe_username, $unsafe_password); $query->execute(); $data = $query->get_result(); if(is_array($data)) { echo "Login successful"; } else { echo "Login failed"; } } 

Ниже приведен код, используемый для подключения MYSQL:

 function connect_database() { $con = mysqli_connect("servername", "username", "", "dbname"); if (!$con) { $con = ""; echo("Database connection failed: " . mysqli_connect_error()); } return $con; } 

Используя mysqli_prepare , я получаю следующие предупреждения и сообщения об ошибках:

 Warning: mysqli_prepare() expects exactly 2 parameters, 1 given Fatal error: Call to a member function bindParam() on null 

Я задал подобный вопрос два дня назад, но не получил никакого полного решения. ( Предотвратите внедрение SQL на страницу входа в PHP и MySQL ).

Пожалуйста, помогите мне в решении проблемы. Является ли это лучшим подходом к предотвращению моего DB от SQL Injection?

отсутствует переменная соединения $con

 $query=mysqli_prepare($con,"select user_id from users where user_name= ? and password= ? "); 

и изменить это тоже

 $query->bind_Param("ss", $unsafe_username, $unsafe_password); ^^^ 

Вы должны добавить переменную $con в функцию подготовки

$query=mysqli_prepare($con,"SELECT user_id FROM users WHERE user_name= ? AND password= ? ");

Процедурный стиль mysqli_prepare ожидает, что первым параметром будет переменная соединения, а вторая – строка (запрос).

+ Изменить

 mysqli_prepare("select user_id from users where user_name= ? and password= ? "); 

в

 mysqli_prepare($conn, "select user_id from users where user_name= ? and password= ? "); 

Прочитайте документацию здесь .