使用AJAX更新SQL数据库

时间:2014-02-24 19:43:33

标签: php sql 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>

我的数据库名为“login”,其中包含一个名为“users”的表。我希望有多个可编辑的链接(基本上是编辑个人资料页面)。当前示例用于编辑登录用户的电子邮件“user_email”,该电子邮件也作为“user_email”存储为$ _SESSION数据。网页本身称为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>

1 个答案:

答案 0 :(得分:0)

试试这个,你添加了额外的"查询结尾。

 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));
    ?>