【问题标题】:How can I delete selected rows in Shiny from MySQL如何从 MySQL 中删除 Shiny 中的选定行
【发布时间】: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)

【问题讨论】:

    标签: mysql r shiny


    【解决方案1】:

    我找到了修改这部分代码的解决方案:

      observeEvent(input$del, {
        delFunction(input$tbl_rows_selected)
      })
    
      delFunction <- function(id) {
        count <- id
        data <- sqlOutput()[count, 1]
        query <- sprintf("DELETE FROM test WHERE (`idtest` = '%d');", data)
        dbSendQuery(con, query)
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-06
      • 2017-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多