Подтвердить что ты не робот

Как избежать апострофа (') в MySql?

Документация MySQL говорит, что она должна быть \'. Однако и scite, и mysql показывают, что '' работает. Я видел это, и он работает. Что мне делать?

4b9b3361

Ответ 1

Документация MySQL, которую вы цитируете, фактически говорит немного больше, чем вы упоминаете. Он также говорит,

A "'" внутри строки, указанной с помощью "'", может быть записано как "''".

(Кроме того, вы связаны с версией MySQL 5.0 в таблице 8.1. Специальные последовательности escape-последовательности, а текущая версия - 5.6, но текущий Таблица 8.1. Специальные последовательности escape-символов выглядит довольно похоже.)

Я думаю, что примечание Postgres в параметре backslash_quote (string) информативно:

Это определяет, может ли знак кавычки быть представлен \' в строковом литерале. Предпочитаемый стандартный SQL-код для представления метки кавычки заключается в удвоении его (''), но PostgreSQL исторически также принимал \'. Однако использование \' создает угрозы безопасности...

Это говорит мне, что использование двукратного символа одной кавычки является лучшим общим и долгосрочным выбором, чем использование обратной косой черты для выхода из одной кавычки.

Теперь, если вы также хотите добавить выбор языка, выбор базы данных SQL и ее нестандартные причуды, а также выбор структуры запроса для уравнения, тогда у вас может быть другой выбор. Вы не даете много информации о своих ограничениях.

Ответ 2

Стандартный SQL использует двойные кавычки; MySQL должен согласиться с тем, чтобы быть достаточно совместимым.

'He said, "Don''t!"'

Ответ 3

То, что я считаю, означает, что user2087510:

name = 'something'
name = name.replace("'", "\\'")

Я также использовал это с успехом.

Ответ 4

просто напишите '' вместо ' я означает два раза '

Ответ 5

Вот пример:

SELECT * FROM pubs WHERE name LIKE "%John's%"

Просто используйте двойные кавычки, чтобы заключить одинарную кавычку.

Если вы настаиваете на использовании одинарных кавычек (и необходимости избегать символа):

SELECT * FROM pubs WHERE name LIKE '%John\'s%'

Ответ 6

Есть три способа, о которых я знаю. Первый из них не самый красивый, а второй - обычный способ для большинства языков программирования:

  • Используйте другую одиночную цитату: 'I mustn''t sin!'
  • Используйте escape-символ \ перед одиночной цитатой ': 'I mustn\'t sin!'
  • Используйте двойные кавычки, чтобы заключить строку вместо одиночных кавычек: "I mustn't sin!"

Ответ 7

Я думаю, если у вас есть какая-либо точка данных с апострофом, вы можете добавить один апостроф перед апострофом

например. "Это место Иоанна"

Здесь MYSQL предполагает два предложения: "Это место Джона"

Вы можете поставить "Это место Джона". Я думаю, что это должно сработать.

Ответ 8

В PHP мне нравится использовать mysqli_real_escape_string(), который экранирует специальные символы в строке для использования в операторе SQL.

видеть https://www.php.net/manual/en/mysqli.real-escape-string.php

Ответ 9

Заменить строку

value = value.replace(/'/g, "\\'");

где значение - это ваша строка, которая будет храниться в вашей базе данных.

Далее

NPM-пакет для этого, вы можете изучить его

https://www.npmjs.com/package/mysql-apostrophe

Ответ 10

Это работало:

name = 'John O'Brien'
name = name.replace("\'", "\\\'")