【问题标题】:How to enter apostrophe (') into mysql database in R shiny?如何在 R Shiny 中将撇号 (') 输入 mysql 数据库?
【发布时间】:2017-01-31 07:16:07
【问题描述】:

一个

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=" ")) 
})}))


  }



})

如果地址的输入包含撇号(例如:First street's),则表明mysql语句包含一些错误。如何将这些数据无任何错误地输入到 R Shiny 中的 Mysql 中。

【问题讨论】:

  • 如果' 杀死您的查询,您显然很容易受到sql injection attacks 的攻击。你应该学习如何防止这种情况发生。
  • 你可以使用准备好的语句吗?
  • 我无法在 Rshiny 中防止该错误。
  • 你可以使用sprintf("INSERT INTO table1(name,address) VALUES ('%s','%s');", input$name, input$address),但你也应该验证/清理输入。
  • 先生,我在 dbsendQuery 语句之前使用了 dbEscapeStrings() 但出现错误。先生如何验证 Rshiny 中的输入。

标签: r shiny shiny-server rmysql


【解决方案1】:

也许只是添加斜杠(如 php):

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

?

【讨论】:

    猜你喜欢
    • 2011-05-02
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    相关资源
    最近更新 更多