关于XXX.php?id=,XXX.php中的变量id可用的条件是什么? php表单mysql 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <a href = "edit.php?id=<?php echo $result['id'];?>">编辑</a>这个应该是列表页面进入编辑页面的url,使用<a href="xxx"> 是用$_GET 获取的,代码没错。然后进入到编辑页面,修改内容后,你按submit提交。表单的method是$_POST。所以$_GET['id']当然没有数据,因为要用$_POST获取。但你加了hidden,并用$id=$_POST['hid'];获取到了。 if(!empty($_POST['sub'])) { //$id=$_GET['id']; $title=$_POST['title']; $content=$_POST['content']; $id=$_POST['hid']; $sql="update `user` set `title` = '$title', `content` = '$content' where id='$id limit 1'"; mysql_query($sql); echo "<script> alert('更新完成'); location.href='index.php'</script>"; }代码可以这样优化:include("conn.php"); if(isset($_POST['sub'])){ // 判斷是否提交表單 $title=$_POST['title']; $content=$_POST['content']; $id=$_POST['hid']; $sql="update `user` set `title` = '$title', `content` = '$content' where id='$id limit 1'"; mysql_query($sql); echo "<script> alert('更新完成'); location.href='index.php'</script>"; exit();}else{ // 不是提交表單,表示是從列表頁過來 $id=$_GET['id']; $sql="select * from `user` where `id`='$id'"; $query=mysql_query($sql); $result=mysql_fetch_array($query);}?><form action="edit.php" method="post"><input type="hidden" name="hid" value="<?php echo $result['id'] ?>"><br>标题<input type="text" name="title" value="<?php echo $result['title'] ?>"><br>内容<textarea rows="5" cols="50" name="content"><?php echo $result['content'] ?></textarea><br><input type="submit" name="sub" value="提交"></form> edit.php 具有两个不同的功能,在修改微博的过程中将执行两次第一次:edit.php?id=nnn 有 url 参数,程序走 if(!empty($_GET['id'])) 真 分支完成查询数据并充填表单第二次 表单提交 edit.php没有 url 参数,程序走 if(!empty($_POST['sub'])) 真 分支完成数据修改后跳转至目录页由于两个条件不会同时成立,所以 $id=$_GET['id'] 在第二个 if 中不可用此程序有一个潜在的问题:当直接浏览器访问 edit.php 时,因为两个条件都不成立。会在充填表单时发生错误,而暴露服务器布局如果忽略错误检查,此时应为新微博输入。但 edit.php 并无新增微博的处理代码而当做修改的话,又因缺少 id 造成修改失败。还会给出'更新完成'的虚假信息 PHP的弱智问题 怎么转移mysql数据库? 请问PHP中SESSION的有效时间是多长 关于PHP扩展读取php.ini字符串类配置问题,自己摸索了很久还是没搞定,恳请高手帮忙。 谁整合过discuz6.1用户和自己网站的用户登录、注册问题 apache配置ssl问题 第一次写PHP,做了一个小系统,感觉还不错,大家看看 图片批量上传 Mysql主键自增长的问题 有谁知道怎样将sql文件导入mysql数据库,不用工具的?? ajaxfileupload上传文件没反应 strrchr() 函数返回结果有时不对?
这个应该是列表页面进入编辑页面的url,使用<a href="xxx"> 是用$_GET 获取的,代码没错。然后进入到编辑页面,修改内容后,你按submit提交。表单的method是$_POST。所以$_GET['id']当然没有数据,因为要用$_POST获取。但你加了hidden,并用$id=$_POST['hid'];获取到了。 if(!empty($_POST['sub']))
{
//$id=$_GET['id'];
$title=$_POST['title'];
$content=$_POST['content'];
$id=$_POST['hid'];
$sql="update `user` set `title` = '$title', `content` = '$content' where id='$id limit 1'";
mysql_query($sql);
echo "<script> alert('更新完成'); location.href='index.php'</script>";
}代码可以这样优化:include("conn.php"); if(isset($_POST['sub'])){ // 判斷是否提交表單
$title=$_POST['title'];
$content=$_POST['content'];
$id=$_POST['hid'];
$sql="update `user` set `title` = '$title', `content` = '$content' where id='$id limit 1'";
mysql_query($sql);
echo "<script> alert('更新完成'); location.href='index.php'</script>";
exit();
}else{ // 不是提交表單,表示是從列表頁過來
$id=$_GET['id'];
$sql="select * from `user` where `id`='$id'";
$query=mysql_query($sql);
$result=mysql_fetch_array($query);
}
?><form action="edit.php" method="post">
<input type="hidden" name="hid" value="<?php echo $result['id'] ?>"><br>
标题<input type="text" name="title" value="<?php echo $result['title'] ?>"><br>
内容<textarea rows="5" cols="50" name="content"><?php echo $result['content'] ?></textarea><br>
<input type="submit" name="sub" value="提交">
</form>
第一次:edit.php?id=nnn
有 url 参数,程序走 if(!empty($_GET['id'])) 真 分支
完成查询数据
并充填表单
第二次 表单提交 edit.php
没有 url 参数,程序走 if(!empty($_POST['sub'])) 真 分支
完成数据修改后跳转至目录页由于两个条件不会同时成立,所以 $id=$_GET['id'] 在第二个 if 中不可用此程序有一个潜在的问题:
当直接浏览器访问 edit.php 时,因为两个条件都不成立。会在充填表单时发生错误,而暴露服务器布局
如果忽略错误检查,此时应为新微博输入。但 edit.php 并无新增微博的处理代码
而当做修改的话,又因缺少 id 造成修改失败。还会给出'更新完成'的虚假信息