簡體   English   中英

使用AJAX更新SQL數據庫

[英]Update SQL database using AJAX

我有一個從網站復制的代碼,但無法弄清楚如何正確使用它:

<?php
if (isset($_POST['action'])) {
$field = $_POST['db_field'];
$value = $_POST['db_value'];
$link = mysql_connect("localhost", "root", "");
mysql_select_db("login", $link);
mysql_query("UPDATE users SET $field='$value' WHERE user_id='$_SESSION[user_id]'"", $link);
mysql_close($link);
}
?>
<html>
<head>
<script type="text/javascript">
function performAjaxSubmission() {
$.ajax({
url: 'editprofile.php',
method: 'POST',
data: {
action: 'save',
field: $(this).attr("db_field"), 
val: $(this).attr("db_value")
},
success: function() {
alert("success!");
}
});
return false; // <--- important, prevents the link's href (hash in this example) from executing.
}

jQuery(document).ready(function() {
$(".savebtn").click(performAjaxSubmission);
});
</script>
</head>
<body>
<div class="gear">
<label>Primary E-Mail:</label>
<span id="pemail" class="datainfo"><?php echo $_SESSION['user_email']; ?></span>
<a href="#" class="editlink" db_field="user_email" db_value="$_SESSION['user_email']">Edit Info</a>
<a class="savebtn">Save</a>
</div>
</body>
</html>

我的數據庫稱為“登錄”,其中包含一個名為“用戶”的表。 我希望有多個可編輯鏈接(主要用於編輯個人資料頁面)。 當前示例用於編輯已登錄的用戶電子郵件“ user_email”,該電子郵件也作為$ _SESSION數據存儲為“ user_email”。 該網頁本身稱為editprofile.php

我認為我的問題出在db_value上-我希望它是被編輯的值。 當我單擊“編輯”按鈕並更改值時,一切似乎都正常工作。當我單擊“保存”時,它實際上會提示您說它已保存,但數據庫中沒有任何更改。

對於基本問題,我深表歉意,希望你們能幫助我。

編輯電子郵件鏈接之后將是其他各種編輯鏈接,例如編輯地址和編輯電話號碼。 一個例子是:

<div class="gear">
<label>Primary PhoneNumber:</label>
<span id="pphone" class="datainfo"><?php echo $_SESSION['user_phone_number']; ?></span>
<a href="#" class="editlink" db_field="user_phone_number" db_value="$_SESSION['user_phone_number']">Edit Info</a>
<a class="savebtn">Save</a>
</div>

試試這個,您已經在查詢中添加了額外的"

 mysql_query("UPDATE users SET `$field`='$value' WHERE user_id='$_SESSION[user_id]'");

代替

mysql_query(
 "UPDATE users SET $field='$value' WHERE user_id='$_SESSION[user_id]'"", $link);
                                                                   ...^

更新:

<script type="text/javascript">
function performAjaxSubmission() {
    $.ajax({
        url: 'test.php',
        method: 'POST',
        data: {
            action: 'save',
            field: $("#db_field").val(), 
            val: $("#db_value").attr()
        },
        dataType:'json',
        success: function(data) {
            alert(data.success);
            }
        });
    return false; 
}

jQuery(document).ready(function() {
    $(".savebtn").click(performAjaxSubmission);
});
</script>

HTML:

   <div class="gear">
    <label>Primary E-Mail:</label>
    <span id="pemail" class="datainfo"><?php echo $_SESSION['user_email']; ?></span>
    <a href="#" class="editlink">Edit Info</a>

    <input type="hidden" id="db_field" value="user_email">
    <input type="hidden" id="db_value" value="<?php echo $_SESSION['user_email'];?>">

    <a class="savebtn">Save</a>

在test.php中,

<?php 
    $conn = mysqli_connect("localhost","root","","login"); 
    $message ="";
     if (mysqli_connect_errno()) { $message =  "Connect failed: " . mysqli_connect_error(); } 


     if (isset($_POST['action'])) {
        $field = $_POST['db_field'];
        $value = $_POST['db_value'];            
        mysqli_query($conn, "UPDATE users SET `$field`='$value' WHERE user_id='$_SESSION[user_id]'");
        mysqli_close($conn);
        $message ="Updated Sucessfuly!";
     }

     echo json_encode(array('success'=>$message));
    ?>

暫無
暫無

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

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