我有一个可以用jQuery ui排序的列表。我能够保护用户所做的更改,并将其存储在var$订单中。我的问题是,我不知道如何将其保存在MySql数据库中。如何确保MySql表中的订单安全?(请从最基本的角度解释,我只是在学习php(
HTML。index.html:
<ul id="sortable">
<li id="1">item1</li>
<li id="2">item2</li>
<li id="3">item3</li>
</ul>
JQUERY。index.html:
$('#sortable').sortable({
update: function(event, ui) {
var newOrder = $(this).sortable('toArray').toString();
$.get('6.php', {order:newOrder};
});
}
});
PHP:6.PHP:
$order = $_GET['order'];
// echo $order; // this gives something like 2,3,1
如何使用php和Mysql来保护下表中的$order
我应该更改id以发出新订单吗?将订单存储在一个新列中更好吗?如何按顺序挑选每个元素并将其放在表格的正确位置?
类似于:
mysqli_query($con,"UPDATE MyTable
SET ...
WHERE ... ");
MYSQL表MyTable:
id concept order
-----------------------
1 item1
2 item2
3 item3
使用每个项目的正确顺序更新数据库:
$order = $_GET['order'];
// echo $order; // this gives something like 2,3,1
$itemIds = explode(',', $_GET['order']);
foreach($itemIds as $priority => $itemId) {
// Here you have to update your table, something like UPDATE items SET priority = $priority WHERE id = $itemId
}
然后查询以获得正确顺序的所有物品:
SELECT * FROM items ORDER BY priority
("order"是SQL中的一个保留关键字,因此您不应该将字段称为"order",在这里我选择了"priority"。(
$order=explode(',',$_GET['order']);
foreach($order as $num=>$id){
if((int)$id!=0){
mysqli_query("UPDATE `MyTable` SET `order`='".$num."' WHERE `id`='".(int)($id)."'");
}
}
0($order=explode(',',$_GET['order']);
-在此$order=array(2,3,1);
之后
1( 在sql查询中可以使用顺序字段。需要接受"`"。
2( 特别适用于停止sql注入-更好(更快(的方法-将即将到来的变量转换为整数格式(有关详细信息,请参阅我在评论中的回答(。
3( 在foreach中,写入$num-变量-数组元素的顺序号。0、1、2、-可以用于数据库记录顺序。
如果订单只有字符串,则可以分解订单。当您插入它时,您可以使用数组键作为排序编号。
$order = $_GET['order'];
$items = explode(',', $order);
foreach($items as $key => $item) {
// Do insert where order = $key
}
希望这能帮助您:(