我创建了一个带有无法使用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!";
    }
?>

10-01 01:27
查看更多