我的更新查询无法使用我的变量$ id但是当我使用文字数字29时,它确实有效。我有var_dumped $ id,我得到INT(29)。最近发生了一些变化,因为我复制了过去有效的代码。
$id = (ISSET($_GET['id'])) ? intval($_GET['id']):0;//prevents sql inject
var_dump($id);
我的查询有效如下:
$sqlUpdate = $db->query("UPDATE sites SET site_name='$site_name',population='$population' WHERE id=29");
此查询无效:
$sqlUpdate = $db->query("UPDATE sites SET site_name='$site_name',population='$population' WHERE id=$id");
答案 0 :(得分:0)
我发现了我的问题/答案。我在表单中使用了<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
,因为处理表单帖子的代码位于同一个文件中。点击'UPDATE'后,我在地址栏中注意到文件名是正确的,但它在短时间内丢弃了GET变量。此时,以下代码再次运行...
$id = (ISSET($_GET['id'])) ? intval($_GET['id']):0;
$id = protect($db,$id);
并且我的变量$ id已从正确的GET值更改为0,从而阻止我的代码更新正确的记录。我将代码更改为以下内容:
<form method="post" action="">
并且一切都完美更新。如果有人想解释为什么会发生这种情况,我将非常感激。