【发布时间】:2020-02-03 12:04:19
【问题描述】:
单击我的shinyapp 中的删除按钮时,我需要从MySql 数据库中删除选定的行。它必须与单选一样适用于多重选择。
我使用 input$table_rows_selected,但它在 Shiny 中返回数据框中行的 ID,而不是在 MySQL 中。这就是为什么它不起作用。
我的代码是:
library(shiny)
library(DBI)
con <- dbConnect(RMySQL::MySQL(), dbname = "test", username = "root", password = "password", host = "host", port = 3306)
onStop(function() {
dbDisconnect(con)
})
ui <- fluidPage(
DT::dataTableOutput("tbl"),
actionButton("del", "Delete user"),
)
server <- function(input, output, session) {
sqlOutput <- reactive({
sqlInput <- "select * from test"
dbGetQuery(con, sqlInput)
})
output$tbl <- DT::renderDataTable(sqlOutput(),
server = TRUE, rownames = FALSE
)
observeEvent(input$del, {
delFunction(input$tbl_rows_selected)
})
delFunction <- function(id) {
query <- sprintf("DELETE FROM test WHERE (`idtest` = '%d');", id)
dbSendQuery(con, query)
}
}
shinyApp(ui, server)
【问题讨论】: