jeditable的问题。想要动态更改用户信息,但它不起作用。在调试期间它显示POST ok,没有错误,没有成功
我的代码(index.php)
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="js/jquery.jeditable.js"></script>
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
$(".dblclick").editable("change.php", {
submitdata : {userid: "<?=$id?>"},
id : 'elementid',
name : 'newvalue',
indicator : "<img src='styles/images/ui-anim_basic_16x16.gif'>",
tooltip : "click to edit",
event : "dblclick",
style : "inherit"
});
});
</script>
...
<div id="fullname" class="dblclick" ><?=$person->fullname?></div>
change.php
<?php
require 'db.php';
$id=$_POST['userid'];
$field=$_POST['elementid'];
$newvalue=$_POST['newvalue'];
if(isset ($id) && isset($field) && isset($newvalue) )
{$query = $db->query("UPDATE usr_table SET '$field'='$newvalue' WHERE id = '$id'") or die(mysqli_errno());
}
?>
我哪里错了?
答案 0 :(得分:1)
您必须在列名称周围使用反引号,而不是引号。但是,我必须注意,编写此代码的方式是非常不安全。您永远不应该将GET POST变量直接放入数据库查询中。
这样更好:
<?php
require 'db.php';
function fail($msg) {
header('HTTP/1.0 404 Not Found');
die($msg);
}
$id = (int)@$_POST['userid'];
if (!$id) fail('User ID invalid or missing.', 404);
$field = @$_POST['elementid'];
$allowed_fields = array('fullname','dob','phone','adress','school','info');
if (!in_array($field, $allowed_fields)) fail('Invalid or missing field.', 404);
$newvalue = $db->real_escape_string(@$_POST['newvalue']);
$db->query("UPDATE usr_table SET `$field`='$newvalue' WHERE id=$id") or fail($db->error);
$q = $db->query("SELECT `$field` from usr_table where id=$id") or fail($db->error);
if ($r = $q->fetch_row()) echo $r[0];
else fail('User not found.');