X-editable Bootstrap PHP 数据库更新

Posted

技术标签:

【中文标题】X-editable Bootstrap PHP 数据库更新【英文标题】:X-editable Bootstrap PHP database update 【发布时间】:2014-04-21 09:59:46 【问题描述】:

我正在尝试使用 X-editable (Bootstrap) 更新 mysql 表。问题是 - 数据库没有得到更新。我在***和其他地方经历了几个类似的问题。但找不到解决办法。

我的 mysql 数据库有一个名为“paving_variety”的表,其中包含以下三列:

    身份证 类型 发布

我的前端页面有如下表格:

    <?php
    $i = 1;
    foreach ($obj->showAllFromTable('paving_variety') as $variety) 
        extract($variety);
    ?>
        <tr>
            <td><?php echo $i++; ?></td>
            <td class="id"><?php echo $id; ?></td>
            <td><a href="#" class="xedit_variety" data-name="type" data-type="text" data-pk="<?php echo $id; ?>" data-url="post_variety_ajax.php"><?php echo $type; ?></a></td>
            <td ><button class="status_change btn btn-default"><?php echo $publish; ?></button></td>
        </tr>
    <?php
    
    ?>

javascript文件有如下代码:

    $(document).ready(function() 
        $('.xedit_variety').editable();
    );

“post_variety_ajax.php”看起来像这样:

<?php
$pk = $_POST['pk'];
$name = $_POST['name'];
$value = $_POST['value'];

include 'adminclass.php';

if(!empty($value)) 
    $gar->updateVarietyName($name,$value,$pk);
 else 
    echo "This field is required!";

?>

“adminclass.php”有如下代码更新数据库:

public function updateVarietyName($name,$value,$pk) 
    $query = mysqli_query($this->conn,"UPDATE paving_variety SET $name='$value' WHERE id='$pk'");

其他一切似乎都正常,但数据库没有更新。有人有什么建议吗?

谢谢。平静。

【问题讨论】:

可爱的SQL injection attack 漏洞。享受您的服务器 pwn3d。另外,你只是假设一切都很顺利。您是否在更新函数中检查了 $query 的布尔值 false? 感谢您对 SQL 注入攻击的建议。我还没有在这个项目中插入安全增强代码,但我会的。是的,我检查了 $query,它返回 true。 然后检查affected_rows。如果为零,则查询成功,但 where 子句不匹配任何内容,因此不会更新任何记录。 @user2407971 事后才考虑安全是个坏主意。你忘记一些事情。只需从一开始就使用参数化查询,您不必担心以后重构整个程序。 完成。但问题依然存在。 【参考方案1】:

好的,我终于解决了这个问题。如下:

$('.xedit_variety').editable(
    ajaxOptions : 
        type : 'post'
    
);

希望它可以帮助其他面临同样问题的人。

【讨论】:

【参考方案2】:

您也可以使用,

$(document).ready(function() 
   $('.xedit_variety').editable(
      name: 'type',
      type: 'text',
      url: 'post_variety_ajax.php'
   );
);

你应该删除的地方

data-name="type"
data-type="text"    
data-url="post_variety_ajax.php"

在您的可编辑链接中。

【讨论】:

【参考方案3】:

或者您可以在post_variety_ajax.php 文件中使用$_REQUEST[],它将同时处理get 和post 请求。

我在这里找到了可编辑的 x 教程:- jQuery X editable plugin

【讨论】:

以上是关于X-editable Bootstrap PHP 数据库更新的主要内容,如果未能解决你的问题,请参考以下文章

x-editable + bootstrap 3 + Twitter typeahead.js 不工作

X-editable Datepicker + Bootstrap 3? [关闭]

x-editable (twitter bootstrap):如何更改空值?

在 Bootstrap X-editable 中添加加载器图像/文本

在flask中 bootstrap x-editable 怎样提交修改后的数据到后台

Flask-Admin Bootstrap 4 X-editable date 导致错误