Как ввести апостроф (') в базу данных mysql в R Shiny?

A

ui.R

library(shiny)
library(shinyjs)

shinyUI(fluidPage(
  bootstrapPage(



  )
)
)

Server.R

library(shiny)
library(shinyjs)
mydb=dbConnect(MySQL(),user='',password='123',dbname='test1',host='localhost')
shinyServer(function(input, output,session){


column(4, 
                    textInput("name", label = "NAME:", 
                              value ='')),
             column(4, 
                    textInput("address", label = "Address:", 
                              value =''))

column(2,
                              actionButton("add", "ADD"))



 observeEvent(
    input$add, 
 output$ui123 <- renderUI({isolate({

dbSendQuery(mydb,paste("INSERT INTO table1(name,address) VALUES ('",input$name,"','",input$address,"');",sep=" ")) 
})}))


  }



})

Если входные данные для адреса содержат апостроф (например: Первая улица), то это показывает ошибку, что инструкция mysql содержит некоторую ошибку. Как можно без ошибок ввести эти данные в Mysql в R shining.


person Rad    schedule 22.09.2016    source источник
comment
вы, очевидно, уязвимы для атак SQL-инъекций, если ' убивает ваш запрос. вы должны научиться предотвращать это.   -  person Marc B    schedule 22.09.2016
comment
Можно ли использовать подготовленный оператор?   -  person Matthew Lundberg    schedule 22.09.2016
comment
Я не смог предотвратить эту ошибку в Rshiny.   -  person Rad    schedule 22.09.2016
comment
вы можете использовать sprintf("INSERT INTO table1(name,address) VALUES ('%s','%s');", input$name, input$address), но вы также должны проверять/дезинфицировать входные данные.   -  person Geovany    schedule 22.09.2016
comment
Сэр, я использовал dbEscapeStrings() перед оператором dbsendQuery, но получил ошибку. Сэр, как проверить входные данные в Rshiny.   -  person Rad    schedule 23.09.2016
comment
Сэр sprintf также показал ту же ошибку.   -  person Rad    schedule 23.09.2016


Ответы (1)


возможно, просто добавьте косые черты (например, php):

gsub(pattern = "'", replacement = "\\\\'", x = "test'")

?

person prise6    schedule 22.09.2016