从URL获取id;PHP,MySQL

从URL获取id;PHP,MySQL,php,mysql,Php,Mysql,嗨,我一直很好奇如何在url中获取id,比如php?pid=4,并在sql的更新语句中使用它。这是我的代码,但由于url中的变量id未定义,无法正常工作 my function.php function update_spot(){ $id=$_GET[pid]; if (isset($_POST['update'])){ $sql="UPDATE reports SET date_time_started='$_POST[date1]' , date_time_finished=

嗨,我一直很好奇如何在url中获取id,比如php?pid=4,并在sql的更新语句中使用它。这是我的代码,但由于url中的变量id未定义,无法正常工作

my function.php

function update_spot(){

$id=$_GET[pid];
if (isset($_POST['update'])){
$sql="UPDATE reports SET date_time_started='$_POST[date1]' ,
    date_time_finished=   '$_POST[date2]',
    barangay='$_POST[brgy]',
    street= '$_POST[street]',
    owner='$_POST[owner]', 
cause='$_POST[cause]',
motive='$_POST[motive]',
firfighter='$_POST[firefighter]'. 
civilian='$_POST[civilian]', 
ifirefighter='$_POST[ifirefighter]',
icivilian='$_POST[icivilian]',
occupancy='$_POST[occupancy]',
ed='$_POST[ed]',
alarm='$_POST[alarm]'

where id='".$id."' ";

 if (!mysql_query($sql)){ die('Error: ' . mysql_error()); } ?>
<script type='text/javascript'>alert('sucessful changed try it next time you log 

in.');window.location='view_inbox.php';</script>    <?php
}

}
似乎我无法在url中获取id。我的url以php?pid=5的形式显示,应该是

$id = $_GET['pid'];

在$\u上使用引号获取数组访问权限

$pid = $_GET['pid'];
此外,您还混合了$\u GET和$\u POST。根据表单的GET或POST方法,您应该使用其中一种方法

您还需要更改访问它的所有区域。即

barangay = '$_POST[brgy]';
这应该是,以及之后的所有其他行

barangay = $_POST['brgy'];

@在上面的例子中,它仍然可以工作,但会导致php警告,表示未定义的php常量将被假定为字符串


我会转储get global并查看变量是否存在,例如var_dump$\u get

注意,代码很容易被sql注入您有一个。在“$\u POST[firefighter]”之后,您现在应该使用mysqli或PDO库,而不是mysql。确保你对输入内容进行了清理,否则你基本上是在让人们自由支配你的数据库。请阅读《感谢你的观察》im bit huggard hehe.。好的,谢谢你的帮助。你关于混合GET和POST的评论是不正确的。您可以使用GET参数发布到URI,并且每组数据将在各自的超级全局数组$\u GET和$\u POST中可用。感谢您的回复。现在我得到了这个错误,你的SQL语法有一个错误;查看与您的MySQL服务器版本对应的手册,以了解使用near'的正确语法。第7行的平民class='1',ifirefighter class='3',icivilian class='8',占用class='Structural',我可以换成“应该”来让你高兴,但两者混合在一起会让人很困惑。@Rottingham我不这么认为。我宁愿将数据发布到someUri?id=123,也不愿尝试将id=123作为隐藏表单字段或类似内容插入。您的语法错误是因为您试图不正确地连接字符串。所有字段名=值对都需要更正。
$pid = isset($_GET['pid']) ? 0 : intval($_GET['pid']) //to avoid problems in this case