Php 如何使用AJAX删除mySql表行
ajaxdel.phpPhp 如何使用AJAX删除mySql表行,php,jquery,mysql,Php,Jquery,Mysql,ajaxdel.php var table = "users"; var id = 25; $("#btndel").click(function() { if (confirm("Are you sure ?")) { $.ajax({ url: 'ajaxdel.php', type: 'post', data: { 'table': 'table',
var table = "users";
var id = 25;
$("#btndel").click(function() {
if (confirm("Are you sure ?")) {
$.ajax({
url: 'ajaxdel.php',
type: 'post',
data: {
'table': 'table',
'id': 'id'
},
success: function() {
location.href = "index.php";
}
})
}
});
表行未被删除。首先,您将字符串
'Table'
和'id'
作为POST参数传递,而不是相应变量的内容:
extract($_POST);
$stmt = $db->prepare('DELETE FROM '.$table. ' WHERE id = :id') ;
$stmt->execute(array(':id' => $id));
相反,您希望传递变量值:
data: {'table': 'table', 'id': 'id'},
在将代码放在生产系统附近之前,您还应该仔细考虑可能存在的漏洞。首先,您将字符串
'table'
和'id'
作为POST参数传递,而不是相应变量的内容:
extract($_POST);
$stmt = $db->prepare('DELETE FROM '.$table. ' WHERE id = :id') ;
$stmt->execute(array(':id' => $id));
相反,您希望传递变量值:
data: {'table': 'table', 'id': 'id'},
在将代码放在生产系统附近之前,您还应该仔细考虑可能存在的漏洞。TimoSta的答案很好。但我在评论中看到它仍然不起作用 因此,您可以在PHP上尝试以下内容。
传递表名是一种更安全的方法 我假设您使用SQL用户/pass/DBname定义了
$db
,并且您使用的SQL用户具有删除
权限
data: {'table': table, 'id': id},
蒂莫斯塔的回答很好。但我在评论中看到它仍然不起作用 因此,您可以在PHP上尝试以下内容。
传递表名是一种更安全的方法 我假设您使用SQL用户/pass/DBname定义了
$db
,并且您使用的SQL用户具有删除
权限
data: {'table': table, 'id': id},
@RoryMcCrossan,未删除表行。请不要使用
extract()
。register_globals从PHP中删除是有充分理由的,为这么简单的事情重新创建它只是。。。糟糕。不管怎么说,您都会让自己处于开放状态,因为您直接将$table填充到查询中。。。永远不要直接将用户输入作为代码执行。您还应该像处理id一样将表参数化。我投票将此问题作为非主题关闭,因为它不安全,任何人都不应该使用它。@Rorymcrossan,表行未被删除。不要使用extract()
。register_globals从PHP中删除是有充分理由的,为这么简单的事情重新创建它只是。。。糟糕。不管怎么说,您都会让自己处于开放状态,因为您直接将$table填充到查询中。。。永远不要直接将用户输入作为代码执行。您还应该像处理id一样将表参数化。我投票将此问题作为非主题关闭,因为它不安全,任何人都不应该使用它。我编写了data:{'table':table,'id':id},
而不是数据:{'table':'table','id':'id},
但该行仍不会被删除`嘿,这个服务器在哪里?我可以发布删除cmds吗p@Drew我的好朋友想登录…我写了数据:{'table':table,'id':id},
而不是数据:{'table':'table','id':'id'},
,但行仍然没有被删除`嘿,这个服务器在哪里?我可以发布删除cmds吗p@Drew我的好朋友想登录。。。