我正在尝试将textinput的值传递到mysql查询中。
第一个问题是,当使用mysql作为驱动程序时,like操作符与textinput组合的正确语法是什么?我应该把%%放在查询语句的哪里?
其次是如何最好地捕获textinput的React性,以便能够将其传递给查询并创建一个表?
library(shiny)
library(DBI)
library(RMySQL)
server <- shinyServer(function(input, output, session) {
con <- dbConnect(MySQL(), user='user', port = 3306, password='pwd', dbname='db', host='host' )
on.exit(dbDisconnect(con), add = TRUE)
output$tableview <- renderTable({
con <- dbConnect(MySQL(), user='user', port = 3306, password='pwd', dbname='db', host='host' )
on.exit(dbDisconnect(con), add = TRUE)
table <- reactive({
dbGetQuery(con, statement =
paste0(" SELECT author, title, publicationDate, FROM publications
WHERE publications.abstract LIKE %'",input$textSearch,"'% ")
)
})
table()
})
session$onSessionEnded(function() { dbDisconnect(con) })
})
ui_panel <-
tabPanel("Text Input Test",
sidebarLayout(
sidebarPanel(
textInput("textSearch", " Search for keyword", ''),
br(),
submitButton("Update Table View"),
br()
),
mainPanel(
tabsetPanel(tabPanel("Table",tableOutput("tableview"))
)
)
))
ui <- shinyUI(navbarPage(" ",ui_panel))
runApp(list(ui=ui,server=server))
类似的问题:如何在ui.r中读取textinput,在global.r中处理具有此值的查询,并在server.r中使用shinny显示,shinny处理输出,并处理在本例中没有的全局文件。
欢迎有任何见解。
1条答案
按热度按时间c6ubokkw1#
当前代码应构造以下sql:
问题是:
%
应该在里面''
.更新的行:
然后它应该构造以下sql:
对于测试,我建议使用
renderText()
以及verbatimTextOutput()
看看结果。您还可以考虑使用glue包来安全地构造sql查询。
对于第二个问题,文章中的“操作按钮”可能会有用。