2014-01-13 59 views
-2

嗨,我一直在好奇如何获得在像url的pid = 4的URL中的id,并在sql中的更新语句中使用它。那么继承人我的代码,但不能得到它的工作原因是未定义的变量ID,其中的值是在URL中。从网址获取ID; PHP,MySQL

我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。我的网址显示是这样的形式PHP?PID = 5

+2

注意,代码非常容易受到SQL注入 –

+0

你有一个'.'而不是','的'后“$ _ POST [消防队员]”' – Phil

+1

你应该使用'mysqli'或'PDO'库现在,而不是'mysql'。确保你清理你的输入,否则你基本上是让人们免费统治你的数据库。 – vimist

回答

0

应该仅仅是

$id = $_GET['pid']; 
0

您$ _GET数组访问使用引号

$pid = $_GET['pid']; 

而且,你混合$ _GET和$ _POST。您应该使用其中一种,具体取决于您的表单的方法(GET或POST)。

您还想更改您访问它的所有区域。 IE

barangay = '$_POST[brgy]'; 

这应该是和所有其他行后

barangay = $_POST['brgy']; 
+0

您对混合GET和POST的评论不正确。您可以使用GET参数发布到URI,并且每个数据集都将在其各自的超全局数组($ _GET和$ _POST') – Phil

+0

中得到答复。现在我得到了这个错误你的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以找到在'附近'使用的正确语法。平民='1',ifirefighter ='3',icivilian ='8',占用='结构性','在第7行 – jcbbea

+0

我可以换句话来说应该让你开心,但是它们相互混淆。 – Rottingham

0
$pid = isset($_GET['pid']) ? 0 : intval($_GET['pid']) //to avoid problems in this case 
0

@Up,在上面的例子中它仍然应该工作,但会导致PHP警告说,不确定的PHP不变将假定为字符串。

我会转储得到全局,看看是否有变量,例如var_dump($ _ GET);