【发布时间】:2014-07-03 13:20:34
【问题描述】:
我正在尝试创建一个列出数据库表中所有行的 HTML 表。然后,在每一行旁边我想要一个按钮,以便用户可以删除该条目。我已经创建了表格,但我无法让按钮工作。
我一直在四处寻找,我找到了这个帖子How to Call a PHP Function on the Click of a Button,但我无法让它工作。我以前从未使用过 ajax,所以我可能无法正确理解代码。
代码如下:
浏览表格中的所有数据并为每个条目创建一个按钮
<?php
for ($x = 0; $x < sizeof($data); $x++) {
?>
<input type="submit" class="tableButton" name="<?php echo $x ?>" value="<?php echo $x ?>">
<?php
}
?>
当一个 tableButton 被点击时,将它的值发送到 ajax.php
$('.tableButton').click(function () {
var clickBtnValue = $(this).val();
var ajaxurl = 'ajax.php',
data = { 'action': clickBtnValue };
$.post(ajaxurl, data, function (response) {
});
});
ajax.php
获取被按下按钮的值并对其进行操作
<?php
if (isset($_POST['action'])) {
$data = $_POST['action'];
echo $data;
}
?>
目前我只是让它回显值来测试它,但它什么也没显示。我要做的是运行这个查询:
DELETE from myTable WHERE id = $data;
或者如果有人知道更好的方法,请告诉我。
编辑
在进行了更多搜索后,我发现了为什么这没有按我的预期工作。正如我所怀疑的那样,由于我在错过某些东西之前从未使用过 AJAX,所以我不知道回声不会直接打印到屏幕上。我只是将 echo 更改为删除查询并对其进行了测试,它可以工作......所以代码很好,但我认为我应该在某个时候学习 AJAX。感谢大家的回复。
我也知道这里可能的 sql 注入,这只是一个快速的模型,谢谢。
【问题讨论】:
-
这是一个不错的 SQL 注入漏洞。
-
@André:应得的信用:至少 OP 知道
isset... 给 OP:如果用户将按钮的值更改为 "%",在您的查询中使用该值给出:DELETE FROM myTable WHERE id = "%",这不是您所说的安全,是吗? -
这里:How can I prevent SQL-injection in PHP? 有一个很好的防注入准备语句示例,您几乎可以将其复制/粘贴到您的 PHP 代码中,而不是
echo $data并调整查询。 -
您给出的代码不应该显示任何内容,因为您对发布请求的
response什么都不做