2013-01-04 234 views
0

我有下面的代碼,並試圖使用URL中的參數來從我的數據庫中獲得匹配。我不斷收到我的錯誤消息'失敗'。讀取網址:將URL參數傳遞給PHP變量

http://www.examplesite.com/template.php?eventname=3506 

代碼:

<?php 
require_once("./source/include/membersite_config.php"); 

if(!$fgmembersite->CheckLogin()) 
{ 
    $fgmembersite->RedirectToURL("login.php"); 
    exit; 
} 

// Make a MySQL Connection 
... 

// Retrieve the variable from the url 
if(!empty($_GET['eventname'])) { 
    $eventname = $_GET['eventname']; 
} else { 
    //set default value for $eventname or maybe output an error because eventname isn't set 
    echo '<p>', 'something failed', '</p>'; 
} 
+3

你看過var_dump($ _GET)嗎?看起來$ _GET ['eventname']是空的。 – dmaij

+1

[**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 – Kermit

+0

很簡單,你沒有從你的表單$ _GET ['eventname']中獲得這個。因此,請檢查您的表單html以查看該字段名稱 –

回答

0

你的代碼應該工作,除非有與查詢字符串的干擾。

首先

替換此行:

echo '<p>', 'something failed', '</p>'; 

有了:

printf("<pre>Something Failed:\n%s\n</pre>", var_export($_GET, true)); 
exit; 

,其中將包括一些有意義數據並顯示錯誤消息,然後退出所以你不會繼續執行其他腳本中的錯誤/丟失數據。 [printf是一個非常方便的功能學習以及]

如果上面沒有揭示什麼給你,然後找一個.htaccess文件在您的網站,可能有一個重寫規則中的場所,搞亂查詢字符串。

+0

我得到了一些失敗的東西:array() – user1949586

+0

並且在.htaccess中沒有重寫規則 – user1949586

+0

@ user1949586嘗試做一個'phpinfo()'並檢查['variables_order']的值(http://php.net/manual /en/ini.core.php#ini.variables-order)。如果在其中沒有'G',那麼將不會創建$ _GET'。 – Sammitch

0

附註:不要讓你的數據庫因爲不能逃避你在查詢中放置的內容而受到破壞。

$result = mysql_query("SELECT * FROM events WHERE event_id = '$eventname'") 

改爲使用mysql_real_esape_string($ eventname)。

+1

或者更好,放棄不推薦使用的'mysql_ *'函數並開始使用PDO或mySQLi。 – Sammitch