Как предотвратить удаление APOSTROPHE PHP MYSQL
-
28-09-2019 - |
Вопрос
У меня есть система регистрации, которая запрашивает имя пользователя. У некоторых людей есть апостроф в своей фамилии, и она предотвращает записать данные в таблицу базы данных MySQL (например, O'HARE).
Я использую mysql_real_escape_String, который удаляет апостроф из строки. Это было бы в порядке, за исключением случаев, когда мне нужно использовать значение с апострофом против веб-службы, в противном случае веб-сервис вернет ложь.
Я думал, что смогу сделать проверку имени с веб-сервисом, прежде чем использовать MySQL_REAL_ESCAPE_STRING, но может ли это дать недостаток безопасности? Или Weap Web Services уже выполняет свои собственные проверки для чистых входов?
Или есть ли лучший способ пройти через переменную, в которой PHP сохраняет апостроф, но все же сохраняет ее безопасным, а MySQL может принять это?
Решение
Вы должны показать нам какой-то код, потому что mysql_real_escape_string
Не удаляет апостроф, но только избежать их.
Сбежание средств O'Hare
станет O\'Hare
так что его можно вставить в виде строки: 'O\'Hare'
. Отказ После поиска из базы данных ваша стоимость все равно должна быть оригиналом O'Hare
.
Итак, если ApoStrophe «потерян», вероятно, является ошибкой где-то еще в вашей логике программы.
Другой вариант - переключиться с использованием библиотеки MySQL в библиотеку MySQLI или PDO для доступа к вашей базе данных. Последние две подготовлены подготовленные заявления. Подготовленные заявления, как правило, считаются наилучшей практикой для запроса вашей базы данных.
Другие советы
mysql_real_escape_string()
не удалит апострофы.
Ваша проблема скорее всего на стороне выходных данных или другой другой функции возиться с входом.
Вы должны иметь соединение с базой данных, прежде чем использовать mysql_real_escape_string
Или это будет неисправность.