【发布时间】:2016-10-10 03:57:22
【问题描述】:
我正在尝试设置一个按钮,该按钮将删除我们在此运行中加载的所有行,但它不起作用。
PHP:
if(isset( $_GET['startID'], $_GET['endID']))
{
$sql_query = "DELETE FROM users WHERE id BETWEEN " .$_GET['startID'] . " AND " . $_GET['endID'] . ";";
mysql_query($sql_query);
header("Location: index.php");
}
按钮:
<a onClick="javascript: return confirm('Are you sure?');" href='index.php?startID=<?php echo $firstID; ?>&endID=<?php echo $lastID; ?>'>Delete</a>
按钮重定向到:index.php?startID=11111&endID=22222
按钮正在传递值,但它们没有从数据库中删除。谁能指出我的错误?
【问题讨论】:
-
您确定与数据库的连接已建立并正常工作吗?
-
看看这个
isset( $_GET['startID'], $_GET['endID'])和echo $sql_query,把字符串复制到数据库里运行,让我们知道运行成功时显示什么。 -
当然,我已经用 11111 和 22222 替换了真实 ID。我收到了真实的第一个和最后一个 ID。
-
@FrayneKonok 看伙伴:take.ms/9sg3z。这一切都与 PhpMyAdmin 一起工作(我确实像你说的那样,回显了查询并直接运行它)。怎么了?
-
安全问题不仅仅是查询。 @Ricardo 当您在另一个上下文中使用数据作为字符串输入时,它必须正确转义。您正在将数据回显到 HTML 中的查询字符串中......这是两个相互包装的上下文,您的代码会忽略两者。然后,在您的 PHP 中,您有机会使用已准备/参数化的查询从根本上将数据与查询分开。这保证了注入攻击不会发生在您的数据库上,如果它总是被使用的话。用它。这些超出了安全性...如果保持原样,您的代码有时将无法工作。