簡體   English   中英

使用Ajax更新MySQL數據庫

[英]Updating MySQL Database with ajax

我試圖通過單擊按鈕將JS數組發送到.php文件,並使用發送的數組在單擊時運行php文件的代碼。

我有一個按鈕:

<button id="submit" class="button1" >Submit<span></span></button>

我嘗試使用以下命令運行此JS ajax:

$('#submit').click(function() {
  $.ajax({
    method: "POST",
    url: "submit.php",
    data: selectedImageArray
  }).done(function( msg ) {
    alert( "Data Saved: " + msg );
  });
});

在我的Submit.php文件中,我連接到數據庫,然后執行以下操作:

    $array = $_POST['selectedImageArray'];

    $sql = $dbh->prepare("INSERT INTO pending_trades (steam_id, trade_items, is_giving, is_receiving, has_started) VALUES (:steamid, :itemlist, '1', '0', '0')");

    $sql->bindParam(':steamid', $steamprofile['steamid']);
    $sql->bindParam(':itemlist', $array);

    $sql->execute();


}

當我單擊“提交”按鈕時,出現消息“數據已保存”,但是數據庫沒有任何反應。 是否應該單擊按鈕運行Submit.php代碼?

您的JS語法錯誤。 另外,由於#submit是ID,因此不需要使用button限定它。

您的代碼應為:

$('#submit').click(function() {
  $.ajax({
    method: "POST",
    url: "submit.php",
    data: selectedImageArray
  }).done(function( msg ) {
    alert( "Data Saved: " + msg );
  });
});

編輯1:

我看到您已經將上述代碼合並到了JS中。 現在在服務器端解決您的問題(PHP / SQL)。

首先,為什么要解碼$_POST[selectedImageArray]然后重新編碼? 對我來說沒有意義。

其次, $steamprofile['steamid']的值是多少?

第三,您的SQL表的架構是什么? 您確定您沒有違反任何唯一/不為空/ fk約束嗎?

幫自己一個忙,並在服務器端使用調試/日志記錄解決方案。 就像將調試行打印到日志文件中一樣簡單,因此您以后可以檢查以了解發生了什么。

我會做什么:

  • 檢查$_POST[selectedImageArray] 應該是一個字符串。
  • 檢查$array的值。 它應該是一個數組。
  • 閱讀錯誤日志,以了解其他內容。
  • $sql->execute(); 返回bool (成功bool TRUE)。 在腳本中使用它可以返回成功或失敗消息。
  • 記下$sql->errorCode();的值$sql->errorCode(); 失敗。

有了以上所有內容,您就應該有足夠的能力來解決哪里出了問題。

$('#submit').click(function(){
  $.ajax({
      method: "POST",
      url: "submit.php",
      data: {selectedImageArray: selectedImageArray}, // this is supposed to be JSON
      .done(function( msg ) {
        alert( "Data Saved: " + msg );
      });
  });
});

$_POST['selectedImageArray'] // see the quotes

我想steam_id是具有自動增量功能的主鍵,因此,如果您嘗試將具有相同steam_id值的行插入數據庫,則可能無法添加數據。

若要以更好的方式進行調試,請嘗試在服務器中生成查詢並回顯它。 然后嘗試在MySQL控制台中運行相同的查詢以找到響應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM