Здравствуйте у меня возник вопрос по mysqli а именно о Подготавливаемых запросах Вот как я подключаюсь к mysql и выполняю запросы Код (Text): $_GET['ima'];//Переменая которую передает пользователь //соиденяемся с базой даных--------------------------------------- $bdlocation="localhost"; $bduser="444ppt"; $bdpasswd="V44G5Xh"; $connect=mysqli_connect($bdlocation, $bduser, $bdpasswd, "servis"); //---------------------------------------------------------------- //Подготавливаем запрос-------------------------------------------------------------------------------- $stmt = mysqli_prepare($connect, "SELECT * FROM `moheynik` WHERE `ima` = ? ORDER BY `moheynik`.`id` ASC ") //----------------------------------------------------------------------------------------------------- //привязываем переменные к параметрам--------------------------------------------------------------- mysqli_stmt_bind_param($stmt, "s", $_GET['ima']); //------------------------------------------------------------------------------------------------ //запускаем запрос------------------------------------------------------------------------------------------ mysqli_stmt_execute($stmt); //----------------------------------------------------------------------------------------------------------------- //Возвращаем результат-------------------------------------------------------------------------------------------- mysqli_stmt_store_result($stmt); //----------------------------------------------------------------------------------------------------------------- //функции по обработке результата-------------------------------------------------------------------------------------------- echo mysqli_stmt_num_rows($stmt); //------------------------------------------------------------------------------------------------------------- //закриваем соиденения mysqli_stmt_close($stmt); mysqli_close($connect); Так вот правильно ли я все делаю? Особенно интересует вопрос безопасности данного запроса. Насколько он надежный можно ли сюда внедрить sql инъекцию? (Я так понял что сначала идет запрос в базу она начинает его обработку и затем в нее встраиваются наши данные тем самым невозможно выполнить sql инъекцию!)
Не хватает установки кодировки соединения. Использовать суперглобальные массивы в логике - моветон. Добавлено спустя 9 минут 14 секунд: SQL-инъекция в плейсхолдер невозможна
Не используй суперглобальные массивы в логике. А вообще по хорошему, лучше их обработку отдать одному классу и далее к ним обращаться через него. Так ты не будешь постоянно дублировать код.
Еще есть стандартная функция filter_input(). Сначала вытащи нужные данные из POST/GET/COOKIE, проверь и потом с ними работай.