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 中添加加载器图像/文本