【发布时间】: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