mysql - وربطها - كيفية إدراج قيم الإدخال التفاعلي من التطبيق لامعة إلى قاعدة بيانات ميسكل؟




عرض البيانات من قاعدة البيانات php (2)

أنا خلقت تجربة على الانترنت مع حزمة لامعة ل R. دعونا نقول لدي 3 قيم تفاعلية تسمى "إرم"، "قرار" و " تصنيف" .
بالإضافة إلى ذلك، أطلقت قاعدة بيانات ميسكل على خدمة الأمازون على شبكة الإنترنت رديز. الإصدار هو ميسكل 5.6.22 .
تمكنت بنجاح من إرسال قيم غير رد الفعل- مثل الطابع الزمني- إلى قاعدة بيانات ميسكل. لذلك أفترض أن المشكلة هي مكان لتحديد موقع التعليمات البرمجية يتحدث إلى الخلية داخل رمز Server.R. وبالنسبة للقيم غير المتفاعلة، فإنها تعمل تماما عندما تكون الشفرة خارج (قبل) وظيفة الخادم المتفاعل. ولكن مع القيم التفاعلية أفترض أنه ينبغي أن يكون في مكان ما.

لقد حاولت هذا الرمز:

Server.R  
   library(shiny)
   library(RMySQL)
   library(DBI)
    con <- dbConnect(MySQL(), dbname="db", username="myname", password="mypassword", host="myhost.com", port=xxxx)
   function(input, output, session){
       sql <- reactive({
                paste("insert into scenario1 (toss, dec, rat, timestamp) 
                     values (",input$toss,",",input$decision,",",input$rating,"now())")
       })
       result<-reactive({dbSendQuery(con, sql())})
   }

وبهذه الطريقة، لا أحصل على رسالة خطأ. لذلك ربما يكون الخطأ داخل insert into -code.

بالإضافة إلى ذلك، أنا لست متأكدا ما إذا كانت الطرود التي استخدمتها مثالية لهذا الغرض. حاولت الكثير من الأشياء. كلما أضف قيمة رد الفعل من خلال تركه من الاقتباس سكل توقف عن العمل. أنا بدأت أعتقد أن رميسكل مفقود هذه الميزة. لا يوجد شيء حول insert into في الدليل.

هل يمكن لأي شخص أن يكشف عن الخطأ الذي قمت به؟


لديك مشكلة في:

paste("insert into scenario1 (toss, dec, rat, timestamp)
values (",input$toss,",",input$decision,",",input$rating,"now())")

والقضية هي: لا، قبل الآن ():

paste("insert into scenario1 (toss, dec, rat, timestamp)
values (",input$toss,",",input$decision,",",input$rating,",now())")

يجب أن يؤدي ذلك إلى تشغيل الاستعلام. النظر في البيانات المعدة، والتي من شأنها منع هذا النوع من (الجميع شائع جدا يجعلها) أخطاء تسلسل.


وأخيرا، يمكنني إجراء الاستعلام بتشغيل هذا الرمز:

writingMarks <- function(input){ 
    con <- dbConnect(MySQL(), dbname="db", username="myname", password="mypassword", 
           host="myhost.com", port=xxxx)   
    result <- sprintf<-("insert into scenario1 (toss, dec, timestamp) values (%s,%s,%s)",
                input$toss, input$decision, "now()")
    dbSendQuery(con, result)
}

لم أستطع جعل تشغيل الاستعلام paste . مع sprintf هناك أقل الارتباك مع الفواصل.

و، نعم كان لي بالفعل لإضافة isolate() . أنا إدراجه في observe() . لذلك يبدو هذا:

observe({
    if (input$condition==1){
      isolate({
        writingMarks(input)
      })
    }
    return()
  })




rmysql