PHP生成表中的删除按钮,从数据库和页面中删除
Posted
技术标签:
【中文标题】PHP生成表中的删除按钮,从数据库和页面中删除【英文标题】:Delete Button in PHP generated table, deleting from database and page 【发布时间】:2016-04-29 07:40:40 【问题描述】:我试图让这个生成的表上的删除按钮工作(删除数据库记录并从视图中删除行)。该按钮是通过 for 循环中的 echo 语句生成的。
吐出视图的php代码:
<?php
//Waitlist for Nobel Floorplans
$sth = $db->prepare("SELECT id, first_name, last_name FROM wlist");
$sth->execute();
$results = $sth->fetchAll();
$wishlistArray[] = null;
foreach ($results as $result)
echo "<tr><td>".$result['first_name']."</td><td>".$result['last_name']."</td><td><button class=\"delete_class\" id=\"".$result['id']."\" >DELETE</button></td></tr>";
?>
这个 PHP 页面的底部,是这个 javascript f(x):
<script>
$(".delete_class").click(function()
var del_id = $(this).attr('id');
$.ajax(
type:'POST',
url:'delete_page.php',
data: delete_id : del_id,
success: function (data)
if (data)
tx.executeSql('DELETE FROM wlist WHERE id = ?', [delete_id], success, error);
else // DO SOMETHING
);
);
</script>
上述代码的问题在于,没有引用 URL 'delete_page.php',也没有从数据库中删除任何内容。完全调用..
我在包含上述所有代码的 PHP 文件所在的文件夹中有“delete_page.php”。这个文件有这个代码:
<?php
$id = $_POST['delete_id'];
$query = "delete from nobel_waitlist where ID = $id";
?>
如果知道如何通过 AJAX 删除该视图中的该行以及删除数据库记录,那也很棒。
【问题讨论】:
请考虑如果我向您的delete_page.php
发送POST
请求并将id
参数设置为值0 OR 1=1
会发生什么
我有点担心这个问题的答案,但在您的成功案例中,tx
是什么?
last_name,
可爱的sql injection attack 漏洞。享受您的服务器 pwn3d。
呜呜!! 在这里^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^
【参考方案1】:
另一种方式。我不知道executeSql
功能,这就是为什么我给出了一个简单的alert
框。
<script>
$('.delete_class').click(function()
var del_id= $('.delete_class').val();
$.ajax(url:"delete_page.php?delete_id="+del_id,cache:false,success:function(result)
alert("Data Deleted");
);
);
</script>
delete_page.php
<?php
$id = $_GET['delete_id'];
$query = "DELETE FROM nobel_waitlist WHERE ID=:id";
$queryResult = $db->prepare($query);
$queryResult->execute(array(':id' => $id));
?>
【讨论】:
我该如何删除它所在的表中的行?以上是关于PHP生成表中的删除按钮,从数据库和页面中删除的主要内容,如果未能解决你的问题,请参考以下文章