我試着從一個特定的行選擇並從MySQL回顯一個單一領域數據庫使用PHP
$eventid = $_GET['id'];
$field = $_GET['field'];
$result = mysql_query("SELECT $field FROM `events` WHERE `id` = '$eventid' ");
echo $result;
選擇標題欄我得到的是Resource id #19
我應該怎麼做呢?什麼是最好的方法?
我試着從一個特定的行選擇並從MySQL回顯一個單一領域數據庫使用PHP
$eventid = $_GET['id'];
$field = $_GET['field'];
$result = mysql_query("SELECT $field FROM `events` WHERE `id` = '$eventid' ");
echo $result;
選擇標題欄我得到的是Resource id #19
我應該怎麼做呢?什麼是最好的方法?
$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。注入的危險尤其嚴重,因爲沒有數據庫函數來轉義標識符。相反,您需要通過白名單傳遞字段,或者(更好地)使用列名稱外部的其他名稱,並將外部名稱映射到列名稱。無效的外部名稱會導致錯誤。
並且使用mysql_real_escape_string轉義您的值,因爲PHP6不會爲您做到這一點! :)
閱讀手冊,它涵蓋非常好:http://php.net/manual/en/function.mysql-query.php
通常你做這樣的事情:
while ($row = mysql_fetch_assoc($result)) {
echo $row['firstname'];
echo $row['lastname'];
echo $row['address'];
echo $row['age'];
}
或使用預準備語句來幫助避免SQL注入。注意:mysql_query已被棄用,請改爲使用mysqli或PDO。 – 2013-07-31 09:10:44
@TimoHuovinen +1 [mysql_query棄用官方鏈接](http://www.php.net/manual/en/function.mysql-query.php) – 2013-11-05 17:33:56