我创建了一个带有无法使用xeditable插件进行编辑的弹出窗口的表,并尝试通过ajax调用将我的数据提交到数据库。以下是我的表格行代码:
echo "<td><a href=\"#\" id='sel' data-pk=\"$row[loan_id]\">" . $row['loan_status'] . "</a></td>";
我已经尝试调试,在firefox的“网络”选项卡中,我可以看到发布的数据如下:
表格数据:
名称:“贷款金额”
值:“ 2000”
pk:“ 1”
但是post.php的响应是必填字段。这是我的post.php代码
$pk = $_POST['pk'];
$name = $_POST['name'];
$value = $_POST['value'];
/*
Check submitted value
*/
if(!empty($value)) {
$result = mysql_query('update k_loans set '.mysql_escape_string($name).'="'.mysql_escape_string($value).'" where loan_id ="'.mysql_escape_string($pk).'"');
print_r($_POST);
} else {
echo "This field is required!";
}
我的xeditable插件的jQuery代码如下:
$(document).ready(function() {
//toggle `popup` / `inline` mode
$.fn.editable.defaults.mode = 'popup';
$('#loan a').editable({
type: 'text',
name: 'loan_amount',
url: '../payments/post.php',
title: 'Enter amount',
ajaxOptions: {
type: 'put'
}
});
});
但是我无法理解该问题,因为查询对我来说似乎完全可以,但是数据库仍未更新。
任何能够指导我正确方向的人。谢谢
最佳答案
xeditable在他们的github上提供的脚本的第一个问题是使用mysql,这在当今已经不安全了。所以我已经将它们全部转移到使用mysqli。这是可供任何人参考的工作代码:
<?php
$server = "localhost";
$username = "user";
$password = "pass";
$database = "db";
$con = new mysqli($server,$username,$password,$database);
if (!$con){
die('Could not connect: ' . mysqli_connect_error($con));
echo "Cudnt cnnect";}
else{
echo "connected";
}
var_dump($_POST);
$pk = $_POST['pk'];
$name = $_POST['name'];
$value = $_POST['value'];
/*
Check submitted value
*/
if(!empty($value)) {
if ($result = mysqli_query($con,'update k_loans set '.mysqli_real_escape_string($con,$name).'="'.mysqli_real_escape_string($con,$value).'" where loan_id ="'.mysqli_real_escape_string($con,$pk).'"'));
{
echo "Update successful";
}
mysqli_close($con);
print_r($_POST);
} else {
echo "This field is required!";
}
?>