我对 php 还是个新手,正在努力解决它,但我陷入了以下部分:
code for deleting a row in my table
我有一个链接指向我的这段脚本。我很好地完成了前半部分,但是当我按下提交并尝试执行删除查询时,它不会进入我的第二个 if 语句,更不用说进入删除查询了。
$pgd 是页面 ID
我的预感是我在 while 语句之后构建的表单中的操作存在问题
请原谅我的消息格式很奇怪,但现在是凌晨 2 点,我很累,我保证以后会更好地格式化我的问题!感谢任何帮助
编辑:好的,除了缺少 method=post @.@; 的明显错误之外;
编辑:
大家好, 首先,我要感谢大家的回复。 我上周末刚刚开始用 php 编码,所以请原谅我乱七八糟的代码。代码仍在本地运行,我的主要目标是完成功能,然后致力于保护我的代码。
现在回到这个问题,如果我对我的问题含糊其辞,我很抱歉。我会尝试重申一下。
我的问题不是选择要删除的项目,问题是它不会到达第二个 if 语句。
重新编辑: 这次使用我当前的代码:
if($_GET['delete'] == "y")
{
//content hier verwijderen
$sqlcont1="SELECT * FROM content where id ='".$_GET['id']."'";
echo $sqlcont1;
$resultcont1 = mysql_query($sqlcont1) or die (include 'oops.php');
while($rowcont1= mysql_fetch_array($resultcont1)){
echo '<form class="niceforms" action="?pg='.$pgd.'&delete=y&remove=y&id='.$_GET['id'].'" method="post">';
echo '<h1>'.$rowcont1['Titel'].'</h1>';
echo '<p>'.$rowcont1['Content'].'</p>';
echo '<input type="submit" value="Delete article">';
echo '</form>';
}
if($_GET['remove']=="y"){
echo 'rararara';
$id=$_GET['id'];
$sqlrem="DELETE FROM content WHERE id="$id;
echo $sqlrem;
mysql_query($sqlrem);
}
}
回显 $sqlrem 现在给出以下内容: 从 id=8 的内容中删除 这是我当前的代码,我进入第二个 IF 语句,但现在要删除它!
@大家: 好吧,也许大声思考或按照我的步骤工作是有效的,但代码有效,我知道它非常困惑,需要微调。我要感谢大家的帮助和反馈。我喜欢这个,你可能会经常看到我提出一些无聊的问题和困惑的代码,没有任何转义:(
最佳答案
首先,您的脚本中存在 SQL 注入(inject)漏洞。任何人都可以添加一些附加到您的查询的字符串,并可能以某种方式更改它,从而可以使用数据库中的数据进行几乎任何操作。
使用一种反 SQL 注入(inject)方法转义您的值。阅读更多信息,例如 php.net/manual/en/function.mysql-query.php
说到重点...
仅当您调用带有两个参数的 URL(remove
和 delete
设置为 y
时,您的删除代码才会执行。这意味着您的 URL看起来应该类似于 something.php?delete=y&remove=y
。也许您只是没有发现它。
请提供有关所发生错误的详细信息,并告诉我上述解决方案是否有帮助。
关于php - 从 mysql 表中删除一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6132402/