2009-11-20 28 views
11

我試着從一個特定的行選擇並從MySQL回顯一個單一領域數據庫使用PHP

$eventid = $_GET['id']; 
$field = $_GET['field']; 
$result = mysql_query("SELECT $field FROM `events` WHERE `id` = '$eventid' "); 
echo $result; 

選擇標題欄我得到的是Resource id #19

我應該怎麼做呢?什麼是最好的方法?

回答

9
$eventid = $_GET['id']; 
$field = $_GET['field']; 
$result = mysql_query("SELECT $field FROM `events` WHERE `id` = '$eventid' "); 
$row = mysql_fetch_array($result); 
echo $row[$field]; 

但要小心sql注入因爲您直接在查詢中使用$ _GET。注入的危險尤其嚴重,因爲沒有數據庫函數來轉義標識符。相反,您需要通過白名單傳遞字段,或者(更好地)使用列名稱外部的其他名稱,並將外部名稱映射到列名稱。無效的外部名稱會導致錯誤。

+3

或使用預準備語句來幫助避免SQL注入。注意:mysql_query已被棄用,請改爲使用mysqli或PDO。 – 2013-07-31 09:10:44

+0

@TimoHuovinen +1 [mysql_query棄用官方鏈接](http://www.php.net/manual/en/function.mysql-query.php) – 2013-11-05 17:33:56

14

試試這個:

echo mysql_result($result, 0); 

這是不夠,因爲你只取一排的一個領域。

+0

說參數計數無效 – mrpatg 2009-11-20 09:32:40

+2

'mysql_result($結果,0)'第一個(並且只)行。 – jensgram 2009-11-20 09:33:46

+0

是的。編輯它。但是,如果我沒有明確說明它,通常不應該爲第一行工作。 – Franz 2009-11-20 09:34:42

1

並且使用mysql_real_escape_string轉義您的值,因爲PHP6不會爲您做到這一點! :)

相關問題