Пока я пытался выполнить следующую команду SQL, я получил ошибку sql.
INSERT INTO exampleTbl VALUES('he doesn't work for me')
где не содержится апостроф.
Каким образом можно вставить текст, содержащий '(апостроф) в таблицу SQL.
Пока я пытался выполнить следующую команду SQL, я получил ошибку sql.
INSERT INTO exampleTbl VALUES('he doesn't work for me')
где не содержится апостроф.
Каким образом можно вставить текст, содержащий '(апостроф) в таблицу SQL.
В SQL способ сделать это - удвоить апостроф:
'he doesn''t work for me'
Если вы делаете это программно, вам следует использовать API, который принимает параметры и экранирует их для вас, например, подготовленные операторы или аналогичные, а не экранировать и использовать конкатенацию строк для сборки запроса.
INSERT INTO exampleTbl VALUES('he doesn''t work for me')
Если вы добавляете запись через ASP.NET, вы можете использовать объект SqlParameter для передачи значений, поэтому вам не нужно беспокоиться об апострофе, в который входят пользователи.
попробуйте это
INSERT INTO exampleTbl VALUES('he doesn''t work for me')
$value = "he doesn't work for me";
$new_value = str_replace("'", "''", "$value"); // it looks like " ' " , " ' ' "
INSERT INTO exampleTbl (`column`) VALUES('$new_value')
Я знаю, что вопрос направлен на прямое экранирование символа апостроф, но я предполагаю, что обычно это будет запускаться какой-то программой, обеспечивающей ввод.
То, что я сделал универсально в скриптах и программах, с которыми работал, - это заменить его символом 'при обработке форматирования вводимого текста.
Теперь я знаю, что в некоторых случаях символ обратного удара может фактически быть частью того, что вы пытаетесь сохранить (например, на таком форуме), но если вы просто сохраняете текстовый ввод от пользователей, это возможное решение.
Переход в базу данных SQL
$newval=~s/\'/'/g;
Затем, когда вы возвращаетесь на дисплей, снова фильтруетесь так:
$showval=~s/'/\'/g;
Этот пример был, когда используется PERL/CGI, но он также может применяться к PHP и другим базам. Я обнаружил, что это работает хорошо, потому что я думаю, что это помогает предотвратить возможные попытки внедрения, потому что все "удаляются до попытки вставки записи".
insert into table1 values("sunil' book",123,99382932938);
используйте двойной апостроф внутри одного апострофа, он будет работать
да, сервер sql не позволяет вставлять одиночную кавычку в поле таблицы из-за атаки на SQL-инъекцию. поэтому при сохранении мы должны заменить единый appostrophe на double.
(он не работает для меня) должен быть = > (он не работает для меня)
вы можете использовать обратную косую черту '\', если вы хотите отобразить одну цитату в тексте.
INSERT INTO exampleTbl VALUES ('Он doesn (\') t ');