Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用AJAX删除mySql表行_Php_Jquery_Mysql - Fatal编程技术网

Php 如何使用AJAX删除mySql表行

Php 如何使用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',

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', 
                '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我的好朋友想登录。。。