Вы должны проверить свои данные перед отправкой в базу данных. Или, если проверка невозможна, отфильтруйте и / или экранируйте значение.
проверка
Если вы ожидаете, что ID будет целым числом больше нуля:
if (!ctype_digit($ID)) {
// invalid ID
}
Если вы ожидаете, что токен будет буквенно-цифровой строкой:
if (!ctype_alnum($token)) {
// invalid token
}
Фильтрация
Фильтрация удаляет недопустимые части ввода, поэтому он становится действительным:
if (!ctype_digit($ID)) {
$ID = preg_replace('/\D+/', '', $ID);
// $ID does now only contain digits
}
if (!ctype_alnum($token)) {
$token = preg_replace('/\D+/', '', $token);
// $token does now only contain alphanumeric characters
}
Экранирование
Экранирование заменяет метасимволы определенного контекста, в который должна быть помещена некоторая строка. Для запросов MySQL следует использовать функцию, которая экранирует метасимволы строкового объявления context в MySQL . Для этой цели PHP имеет функцию mysql_real_escape_string
:
$add = "INSERT INTO ids (ID, token) VALUES ('".mysql_real_escape_string($ID)."', '".mysql_real_escape_string($token)."')";