我有一个我从网站上复制的代码,但我无法弄清楚如何正确使用它:
<?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>
答案 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));
?>