数据库查询无法使用xeditable插件

时间:2016-04-15 17:01:19

标签: php jquery mysql ajax

我创建了一个表格,弹出窗口无法使用xeditable插件进行编辑,并尝试使用ajax调用数据库提交我的数据。以下是我的表行代码:

echo "<td><a href=\"#\" id='sel' data-pk=\"$row[loan_id]\">" . $row['loan_status'] . "</a></td>";

我试过调试,在firefox的网络选项卡中,我可以看到发布的数据如下: 表格数据: 名称:&#34; loan_amount&#34; 价值:&#34; 2000&#34; pk:&#34; 1&#34;

但是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!";
    }

我的可编辑插件的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'

   }   

});

});

但我无法理解这个问题,因为查询对我来说似乎完全没问题,但数据库仍然没有得到更新。

任何可以指导我正确方向的人。感谢

1 个答案:

答案 0 :(得分:0)

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!";
    }
?>