2014-01-13 57 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);