从我的sql表中删除一行

如何解决从我的sql表中删除一行

| 我仍然对PHP还是陌生的,但我仍在努力解决以下问题: 删除表中一行的代码 我有一个链接指向我的这段脚本。我运行了前半部分就很好了,但是当我按Submit并尝试执行删除查询时,它将不会进入第二个if语句,更不用说删除查询了。 $ pgd是页面ID 我的预感是我的while语句后我正在构建的表单中的操作存在问题 原谅我味精的奇怪格式,但是凌晨2点又很累,我保证以后会更好地格式化我的问题!任何帮助表示赞赏 编辑:好的,然后缺少方法的明显错误= 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注入漏洞。任何人都可以添加一些将附加到查询中的字符串,可能以某种方式更改它,从而可以利用数据库中的数据进行几乎所有操作。 使用一种反SQL注入方法来转义您的值。在php.net/manual/en/function.mysql-query.php上阅读更多示例 重点是... 仅当您调用带有两个参数的URL(
remove
delete
设置为
y
)时,删除代码才会执行​​。这意味着您的URL看起来应与
something.php?delete=y&remove=y
相似。也许您只是没有发现它。 请提供有关发生的任何错误的详细信息,并告诉我上述解决方案是否有帮助。     ,mysql_fetch_array()返回一个数组 您的while语句充当if,并且不会像您认为的那样遍历返回的数组 你需要类似的东西
$all_rows = mysql_fetch_array($result);
foreach ($all_rows as $row) {
    $sql = \"delete from table where id = \" . $row[\'id\'];
}
    ,在我看来,您正在这里将两种形式混合在一起:您想看看是否进入了删除行形式(前几行),并且您正在尝试展示删除行形式( while循环。)我将把这两件事分开。有一个页面仅显示要删除行的表单,另一个页面处理这些请求。另一个页面将您带到“删除行”页面。 现在,只需在$ _GET []中回显您希望接收的所有值,看看它们是否与您期望的一样。     ,仅在该脚本中就有很多问题,因此,为了使事情变得更简单(考虑您上传了图片),
echo $sqlrem;
在第二个if语句中,查看是否显示查询。如果不是,则表示它甚至没有到达那部分代码,如果显示出来,则将其复制并在phpmyadmin中运行。那应该输出更连贯的错误消息。告诉我们这是什么,我们将逐步解决。     ,我还注意到您的
DELETE
SQL查询可能有问题。如果您的
$pgd\'
id是一个整数,则不应包括
\'
单引号,即仅用于字符串。
**Correction**
$sqlrem = \"DELETE FROM content WHERE id = \" . controw1[\'id\'];
编辑 无论如何,为了帮助所有人,我输入了他的代码以方便查看。 我认为他的错误是
$rowcont1[\'Tilel\']
->可能导致PHP出现错误,因为该列不存在。我以为它应该是“标题”,导致输入错误。
if(_$GET[\'delete\'] == \"y\") {
   $sqlcont1 = \"SELECT * FROM content where id =\'\" . $_GET[\'id\'] . \"\'\";
   $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\">\';
      echo \'<h1>\' . $rowcont1[\'Title\'] . \'<h1>\'; // <-- error here
      echo \'<p>\' . $rowcont1[\'Content\'] . \'</p>\';
      echo \'<input type = \"submit\" value = \"Delete article\">\';
      echo \'</form>\';
   }
   if ($_GET[\'remove\'] == \"y\"){
      $sqlrem = \"DELETE FROM content WHERE id = \" . $rowcont1[\'id\'];
      mysql_query ($sqlrem);
   }
}
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?