PHP表单更新所有mysql行而不是1

时间:2015-09-16 13:35:24

标签: php mysql

public static String backwards(Integer x){
    if (x < 0){
        return "";
    }else{
        return x + ", " + backwards(x - 1);
    }
}

这是我的代码,但是当我尝试执行它时,它会执行我表中的所有行而不是我编辑的唯一行。我搜索了2个小时,但仍然找不到它。你们有没有人知道我怎么能解决这个问题?

3 个答案:

答案 0 :(得分:0)

您似乎需要在表单操作中包含ID。

echo '<form action="details.php?ID='.$row['ID'].'" method="post">';

这样可以在更新查询中使用$_GET['ID']值。

或者,将ID作为隐藏字段添加到表单中,如

echo '<input type="hidden" name="ID" value="'.$row['ID'].'">';

并将SQL查询更改为使用$_POST['ID']而不是$_GET['ID']

$UpdateQuery = "UPDATE eventcalendar SET Title='$_POST[title]', Detail='$_POST[detail]' WHERE ID='$_POST[ID]'";

您还需要查看的内容是转义您在SQL语句中使用的输入。

答案 1 :(得分:0)

除了SQL Injection issues之外,您的问题是:

  1. 您在查询中使用$_GET[ID],而不是$_POST[ID]
  2. 您根本不会将ID发回表格。尝试添加:
  3. echo "<input type='hidden' name='ID' value='{$row[ID]}'>";
    

答案 2 :(得分:0)

您的$_POST[title]$_POST[detail]$_GET[ID]被解释为纯字符串,而不是评估值,要获得评估值,您必须使用连接。

更新此部分:

if (isset($_POST['update'])){
   $UpdateQuery = "UPDATE eventcalendar SET Title='$_POST[title]', Detail='$_POST[detail]' WHERE ID='$_GET[ID]'";
   mysql_query($UpdateQuery, $con);
}

到此:

if (isset($_POST['update']))
{
   $UpdateQuery = "UPDATE eventcalendar SET Title='". $_POST['title']. "', Detail='". $_POST['detail']. "' WHERE ID='". $_POST['ID']. "'";
   mysql_query($UpdateQuery, $con);
}