我正在使用.replace('.', '\.')
从数据库中获取月份列表,并使用它们显示闪亮的下拉菜单。
selectInput()
然后我在另一个查询中使用上面的输入:
month <- dbGetQuery(con, statement =
paste( "select distinct month
from table
order by month
"))
selectInput("month",
"month",
sort(unique(month$month)),
selected = NULL)
问题是,server <- shinyServer(function(input, output) {
output$graph <- renderPlot({
ctab <- dbGetQuery(con, statement =
paste("select colum1, column2
from table
where month_of_year_name = ",input$month,"
"))
output$graph2 <- renderPlot({
})
})
将月份作为1月份,我希望将其作为“Jan&#39;”。
答案 0 :(得分:1)
当您使用'
封装字符串时,可以简单地将"
放入要粘贴的字符串中。例如:
ui <- fluidPage(
selectInput('month','months: ', c('Jan','Feb','Mar')),
h3('old_query'),
textOutput('old_query'),
h3('new_query'),
textOutput('new_query')
)
server <- shinyServer(function(input, output) {
output$old_query <- renderText({
paste("select colum1, column2
from table
where month_of_year_name = ",input$month,"")
})
output$new_query <- renderText({
paste("select colum1, column2
from table
where month_of_year_name = '",input$month,"'")
})
})
shinyApp(ui,server)
希望这有帮助!
答案 1 :(得分:1)
我建议使用sqlInterpolate
来防止SQL注入攻击
server <- shinyServer(function(input, output) {
output$graph <- renderPlot({
ctab <- dbGetQuery(con,
statement =
sqlInterpolate(con,
"select colum1, column2
from table
where month_of_year_name = ?month",
month = input$month))
})
})
答案 2 :(得分:0)
我个人喜欢使用regex
来创建我的查询,我认为它提供了非常好的灵活性和可读性
data <- reactive({
query <- 'select colum1, column2 from table where month_of_year_name = "MONTH"'
query <- gsub("MONTH",input$month,query)
query <- noquote(query)
dbGetQuery(con,query)
})
output$graph <- renderPlot({
data()
})