2014-01-29 86 views
0

我對編程非常陌生,我需要幫助將JavaScript變量添加到MySQL數據庫中。 我已經完成了有關該主題的研究,並且很坦白地說,我無法理解發生了什麼。如何從JavaScript獲取變量並將它們放入MySQL數據庫?

這是我使用的一些代碼。我從一個字符串中提取5個數據,並將其轉化爲一個表單,並在點擊提交按鈕時發生。

情況下 「個體」:

var partNumber = scanInput.substr(6, 8); 
    var posOfQ1 = scanInput.indexOf("Q"); 
    var posOf1JUN = scanInput.indexOf("1JUN"); 
    //Quantity of the pack 
    var total = scanInput.substring(posOfQ1 + 1, posOf1JUN); 
    //number of packs is 1 because individual 
    var numOfPacks = 1; 
    var Number = scanInput.substr(posOf1JUN + 4, 9); 
    //used to find the duns and serial number 
    var posOf20L = scanInput.indexOf("20L"); 
    var posOf21L = scanInput.indexOf("21L"); 

    if (posOf21L == -1 || posOf20L < posOf21L){ 
     var serialNumber = scanInput.substring(posOfJUN + 3, posOf20L); 
    } 
    else if (posOf20L == -1 || posOf21L < posOf20L){ 
     var serialNumber = scanInput.substring(posOfJUN + 3, posOf21L); 
    } 

5個變量是部分號碼,總,numOfPacks,Number和SERIALNUMBER。我希望做的是點擊提交按鈕的形式,JavaScript將執行上面的代碼,並將其轉儲到數據庫中。我會怎麼做呢?

我知道,建立與SQL連接,代碼看起來是這樣的:

 var connection = new ActiveXObject("ADODB.Connection") ; 
    var connectionstring="Data Source=<server>;Initial Catalog=<catalog>;User ID=<user>;Password=<password>;Provider=SQLOLEDB"; 
    connection.Open(connectionstring); 

但我不知道該怎麼投入「數據源」部分和「初始目錄」部分,我不知道如何從這裏輸入數據到數據庫中。

我見過關於Ajax的東西,但我不太熟悉它,但我願意瞭解它是否是最佳路線。謝謝你的幫助。

+1

請注意,您正在使用ActiveX,這意味着只有Internet Explorer和許多IE用戶甚至關閉它。要寫入數據庫,您需要與後端(可能用PHP編寫)進行通信,然後建立數據庫連接並存儲數據。您既可以使用AJAx,也可以在單擊提交數據時將數據發送(或通過GET請求發送),而無需在客戶端進行進一步的工作。 TL; DR您將需要使用服務器端語言(如PHP)(或節點,如果您想要使用JavaScript)來執行此操作。 – Cu3PO42

+0

^使它成爲答案 –

+0

@ Cu3PO42好的,如果使用ActiveX是不明智的,我怎樣從我的JavaScript文件中取出我的變量,然後將它傳遞給PHP,然後將其放入數據庫中? – AlvinJ

回答

3

SQL是一隻手推車的松鼠。松鼠將您的數據抓取到手推車中,並將其從鍵盤拿到數據庫中。你需要自己將數據加載到松鼠的獨輪車中,然後松鼠會自行進行(笑,而它隨着你的數據運行,這很有用)。

數據來自用戶,您(服務器)將負責將數據加載到手推車中。怎麼樣?它會從這裏獲得技術。 =)

首先您需要了解SQL,特別是關於INSERT語句。

最好的選擇是使用存儲過程(它有點安全,但您也可以編寫原始SQL)並使用您打開的連接執行查詢。

在一天結束時,查詢是一個字符串中的SQL代碼,因此您需要在該字符串中插入所有參數,以便將數據正確地插入到數據庫中。

要真正從JS獲取變量到服務器代碼,您很可能需要傳遞所有數據並向其他模塊發出Web請求。這個新模塊將打開與數據庫的連接併發送查詢。這是服務器端代碼(node.js,php,asp.net或任何您正在使用的),因此您需要通過GET將數據傳遞到新模塊(或者「頁面」,如果您願意的話)或POST(POST更安全)。

您可以使用HTML內置表單機制將這個新的Web請求發送到您的新模塊(我相信對您來說會更容易),或者您可以使用AJAX從Javascript執行它(請記住,AJAX是,最後只有Javascript)。

相當快地學習這一切的好資源是w3schools/。花點時間學習這些東西,因爲這很重要。簡而言之:用戶(客戶端) - > html-> javascript->你(服務器) - > php等人 - > sql,然後它一路返回。祝你好運。

- 編輯 -

關於GET and POST,如果你使用GET你會在變量的形式,所有數據直接傳遞到你的PHP模塊的URL(「www.stuff.com ?var1 = value1 & var2 = value2「)。這可能是不安全的,因爲任何人都可以看到你傳遞的數據(考慮爲用戶登錄傳遞數據庫密碼...不酷)。

如果您使用POST,您將使用xmlhttp.send(「var1 = value1 & var2 = value2」),以完全相同的方式傳遞值。在功能上,它與GET相同。但there are differences要知道。選擇最適合您需求的那個。

+0

謝謝你,現在瞭解更多東西!所以我會使用AJAX將數據傳輸到PHP,並使用POST將PHP傳輸到SQL? – AlvinJ

+1

您將使用AJAX通過POST將數據傳輸到PHP,然後PHP到SQL與您的數據庫連接進行通信,而不涉及POST。 POST是將數據從一個PHP頁面傳輸到另一個頁面的一種方式。 AJAX是一種使用POST的技術。 – ArthurChamz

+0

好吧,我一直在閱讀網站,我有一個關於最初的開放方法的問題: xmlhttp.open(「GET」,「getcustomer.asp?q =」+ str,true); 如果我想從同一頁發送變量,我該如何做?我是否只是將鏈接更改爲正在編寫代碼的文件? – AlvinJ

0

假設這是一個網絡瀏覽器,JavaScript在客戶端運行。 MySQL在服務器上運行。通常在接收數據之間有一個(服務器端)步驟,檢查它是否有錯誤,對其進行清理,然後將其插入到數據庫中。

常見的路線是: Javascript AJAX發送數據到 - > PHP服務器端頁面發送數據到 - > MySQL DB。

的Javascript AJAX:http://api.jquery.com/jquery.ajax/

PHP頁面插入到MySQL:http://www.w3schools.com/php/php_mysql_insert.asp

最後,在PHP中,使用這樣的函數來淨化你的投入,使事情更安全:http://us3.php.net/mysql_real_escape_string

+0

使用AJAX,我可以在Javascript文件中編寫代碼嗎?所有這些都可以通過點擊一個提交按鈕來完成? – AlvinJ

+0

是的,一個AJAX調用將在您的JavaScript中抓取所有數據並將其發送到遠程服務器。 jQuery鏈接只是一個庫,可以很容易地實現這樣的調用。 –

0

你有使用服務器端語言的經驗嗎?如果不是,你應該試試Node.js(一個JavaScript服務器)與MySQL plugin。這將節省您學習其他語言的麻煩,以及在同一應用程序中切換語言和範例的麻煩。

祝你好運!

相關問題