Документація MySQL говорить, що так і має бути \'. Однак і scite, і mysql показують, що це ''працює. Я це бачив і це працює. Що я повинен зробити?
\'специфічний MySQL, а ''сумісний з ANSI SQL, якщо я не помиляюся
Документація MySQL говорить, що так і має бути \'. Однак і scite, і mysql показують, що це ''працює. Я це бачив і це працює. Що я повинен зробити?
\'специфічний MySQL, а ''сумісний з ANSI SQL, якщо я не помиляюся
Відповіді:
Документація MySQL, яку ви цитуєте, насправді говорить трохи більше, ніж ви згадуєте. Це також говорить,
"
'" Всередині рядка, цитованого "'", може бути записано як "''".
(Крім того, ви пов’язані з версією MySQL 5.0 таблиці 8.1. Послідовності втечі спеціальних символів ; поточна версія - 5.6 - але поточна Таблиця 8.1. Послідовності втечі спеціальних символів виглядає досить схоже.)
Я думаю, що примітка Postgres про backslash_quote (string)параметр є інформативною:
Це контролює, чи можна позначити лапки
\'в прямому рядку. Кращим, стандартним способом подання позначення лапки є подвоєння його (''), але PostgreSQL історично також прийнято\'. Однак використання\'створює ризики для безпеки ...
Це говорить мені, що використання подвоєного символу з одною цитатою є кращим загальним та довгостроковим вибором, ніж використання зворотної косої риси для виходу з одноцитати.
Тепер, якщо ви також хочете додати до рівня рівня вибір мови, вибір бази даних SQL та її нестандартні вигадки, а також вибір структури запитів до рівняння, то, можливо, ви отримаєте інший вибір. Ви не даєте багато інформації про свої обмеження.
Стандартний SQL використовує подвоєні котирування; MySQL повинен прийняти це, щоб бути розумно сумісним.
'He said, "Don''t!"'
'" всередині рядка, що цитується " '", може бути записано як " ''" . " "" Всередині рядка, цитованого " "", може бути записано як " """. Попередьте символ цитування символом втечі ("` `").
Я вважаю, що користувач2087510 мав на увазі:
name = 'something'
name = name.replace("'", "\\'")
Я також використовував це з успіхом.
Ось приклад:
SELECT * FROM pubs WHERE name LIKE "%John's%"
Просто використовуйте подвійні лапки, щоб укласти єдину цитату.
Якщо ви наполягаєте на використанні одинарних лапок (і необхідності уникати символу):
SELECT * FROM pubs WHERE name LIKE '%John\'s%'
Я знаю три способи. Перший не найкрасивіший, а другий - поширений у більшості мов програмування:
'I mustn''t sin!'\перед єдиною цитатою' :'I mustn\'t sin!'"I mustn't sin!"\'як воно використовується у багатьох мовах програмування, але ''підтримується більшістю діалектів SQL, тому використання параметра 1 краще для сумісності. Наприклад, Sqlite не працює із втеченими зворотними кутами.
Замініть рядок
value = value.replace(/'/g, "\\'");
де значення - це ваш рядок, який буде зберігатися у вашій базі даних.
Далі,
NPM пакет для цього, ви можете переглянути його
Я думаю, якщо у вас є точка даних з апострофом, ви можете додати один апостроф перед апострофом
напр. "Це місце Джона"
Тут MYSQL передбачає два речення "Це місце Джона"
Ви можете поставити "Це місце Джона". Я думаю, що так має працювати.
У PHP мені подобається використовувати mysqli_real_escape_string (), який уникає спеціальних символів у рядку для використання в операторі SQL.
дивіться https://www.php.net/manual/en/mysqli.real-escape-string.php
Можливо, поза темою, але, можливо, ви прийшли сюди, шукаючи спосіб переосмислити введення тексту у формі HTML, так що коли користувач вводить символ апострофа, він не видає помилки, коли ви намагаєтесь написати текст у SQL таблиця в базі даних. Є кілька способів зробити це, і ви, можливо, захочете почитати і про ін'єкцію SQL, але простим варіантом у PHP є використання функції htmlspecialchars (), яка перетворить усі ваші апострофи в те, 'що можливо зберігати все одно.
''чи\'це правильно?