Как поместить данные textarea в базу данных SQL Server? - PullRequest
0 голосов
/ 15 июля 2010

(Это классический ASP) Я уверен, что это всего лишь случай экранирования текста, но я еще ничего не нашел.У меня есть текстовая область, которая может содержать все виды символов, и мне нужно ОБНОВИТЬ запись с тем, что находится в этой текстовой области, но я получаю сообщение об ошибке, которое нарушает мой SQL-запрос, что, я уверен, связано с содержимымtextarea.

Итак, у меня есть это, поскольку мой SQL-запрос:

"UPDATE document SET displayheading='" & _
    stripillegal(request("txt_displayheading")) & _
    "', displayorder=" & displayorder & _
    ", shortdescription='" & stripillegal(request("txt_shortdescription")) & _
    "', document_note='" & request("document_note") ...blah blah blah

Поэтому мне интересно, как я могу содержать textarea, чтобы я мог обновить запись, не разрушая запрос

Ответы [ 2 ]

1 голос
/ 28 июля 2010

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

    DECLARE @DisplayHeading varchar(100)
    DECLARE @DisplayOrder int
    DECLARE @ShortDescription varchar(100)
    DECLARE @DocumentNote varchar(100)

    DECLARE @command nvarchar(500)
    DECLARE @params nvarchar(500)

    SET @command = N'UPDATE document
        SET displayheading=@DisplayHeading
        , displayorder=@DisplayOrder
        , shortdescription=@ShortDescription
        , document_note=@DocumentNote
        --...blah blah blah'

    SET @params = N'@DisplayHeading varchar(100), @DisplayOrder int, 
             @ShortDescription varchar(100), @DocumentNote varchar(100)'

-- Assign values to user variables.

EXEC sp_executesql @command, @params, @DisplayHeading,
     @DisplayOrder, @ShortDescription, @DocumentNote

А вот что вы можете попробовать с ADO:

    cmd.CommandText = "UPDATE document " & _
         "SET displayheading=@DisplayHeading, displayorder=@DisplayOrder, " & _
         "shortdescription=@ShortDescription, document_note=@DocumentNote " & _
         "--...blah blah blah"

    cmd.Parameters.Add(New SqlParameter("@DisplayHeading", DisplayHeading))
    cmd.Parameters.Add(New SqlParameter("@DisplayOrder", DisplayOrder))
    cmd.Parameters.Add(New SqlParameter("@ShortDescription", ShortDescription))
    cmd.Parameters.Add(New SqlParameter("@DocumentNote", DocumentNote))
1 голос
/ 15 июля 2010

Запрос будет прерван, если есть такие символы, как ', вам нужно сначала заменить их:

newStr = Replace("'", "''", request("txt_displayheading"))

И в вашем запросе используйте переменную newStr вместо request("txt_displayheading"

...