Я довольно новичок в MySQL, и я искал столько, сколько смог, но я надеялся, что кто-нибудь может дать мне точный ответ.
Я смотрел на проблемы схранимая процедура в моей базе данных MySQL. Он принимает единственный строковый параметр из внешнего источника в качестве поискового значения и возвращает результаты на основании этого. Однако всякий раз, когда вводится символ '(одинарная кавычка / апостроф), он возвращает ошибку. Заглядывая в это, мне посоветовали, что SP, как он есть, уязвим для инъекций SQL, и что, решая, проблемы с одинарной кавычкой будут решены. Это хранимая процедура:
BEGIN
SET @t1=CONCAT("SELECT `ID` as `Id`, `NAME` as `Name` FROM SEARCH_TABLE WHERE `NAME` like","'",searchString,"%'"," LIMIT 20");
PREPARE stmt3 FROM @t1;
EXECUTE stmt3;
DEALLOCATE PREPARE stmt3;
END
Все, на что я смотрел, говорит о том, что лучший способ избежать внедрения SQL-кода - это использовать подготовленные операторы, так что это все еще под угрозой? Кроме того, чтобы решить проблему с одинарной кавычкой, я видел рекомендации по добавлению еще одной одинарной кавычки, где бы она ни была напечатана (поэтому «станет»). Это лучший способ исправить ошибку?
Спасибо за помощь