public static String backwards(Integer x){
if (x < 0){
return "";
}else{
return x + ", " + backwards(x - 1);
}
}
这是我的代码,但是当我尝试执行它时,它会执行我表中的所有行而不是我编辑的唯一行。我搜索了2个小时,但仍然找不到它。你们有没有人知道我怎么能解决这个问题?
答案 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之外,您的问题是:
$_GET[ID]
,而不是$_POST[ID]
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);
}