Заявката, която сте показали във въпроса, не използва предоставени от потребителя стойности, така че няма случай на SQL инжекция, но в общ случай:-
Първо, трябва да потвърдите всички въвеждането на потребителя (потребителски имена, имейли и т.н.), преди да го използвате в заявка. Например:- Ако сте разрешили само буквено-цифрови знаци в потребителско име, тогава трябва да проверите дали входът всъщност е буквено-цифров или не, преди да продължите да формирате заявка за база данни и също така трябва да проверите размера на всички входове.
След това според мен Prepared Statements е най-добрият избор за предотвратяване на SQL инжектиране.
Проблем с mysql_real_escape_string():-
Тъй като mysql_real_escape_string() избягва символите според набора от знаци по подразбиране, така че е по-добре от функцията addslashes() и правилно дезинфекцира SQL инжекции, произтичащи от злоупотреба с многобайтови набори от знаци , но в друга статия тук , е показан сценарий за заобикаляне, който обяснява, че инжектирането все още може да се извърши.
Решение:-
Така че правилният и по-добър начин за предотвратяване на SQL инжектиране е да използвате подготвени оператори. Това е техника, при която SQL изразите се компилират предварително преди вмъкването на потребителския вход (параметри) и се третират като SQL шаблони за многократна употреба. Така че, той разделя въведеното от потребителя от действителния SQL-код и SQL-парсерът никога не анализира въведеното от потребителя.
Освен сигурността, той също така оптимизира SQL заявката за скорост. Помага в случаите, когато трябва да изпълните една и съща заявка няколко пъти с различни потребителски въведени данни.
Можете да се обърнете към ръководството на PHP за подробности за внедряването.