2013-08-05 71 views
-1
function getById($id) { 
    global $mysqli; 
    $result = $mysqli->query("SELECT * FROM `ids` WHERE `id` = '".$mysqli->real_escape_string($id)."'") or die($mysqli->error); 
    $rows = array(); 
    while($row = $result->fetch_array(MYSQLI_ASSOC)) { 
     $rows[] = $row; 
    } 
    return $rows; 
} 

如何獲取id字段的值?array(php,mysql)的輸出值

$data = getById(1); 

echo $data[0]echo $data['id']不起作用。

+0

嘗試在功能打印$行,你會知道什麼/它是如何返回值 –

+1

嘗試執行'的var_dump($數據)'看該功能返回給你什麼。 –

+0

'echo 1;'因爲'getById(1)'''id''的值應該是'1'。 – deceze

回答

4

你的函數返回一個數組的數組,從而得到第一ID:

$data = getById(1); 
echo $data[0]['id']; 

旁註:

  • 全局是不希望的。考慮將數據庫連接對象作爲參數傳遞給該函數。
  • 像這樣轉義是一種防止SQL注入的原始方法。使用Prepared Statement會更安全,更容易。
  • or die(....)是不好的做法,因爲它會向用戶公開詳細的MySQL錯誤,並且如果您已經寫了數百次,則很難將其刪除。另一種方法是trigger_error(),它悄悄地寫入錯誤日誌。
+0

非常感謝。 – Snickerson

2

你不需要使用while和array。獲取單列,你可以得到不使用數組:

function getById($id) { 
    global $mysqli; 
    $result = $mysqli->query("SELECT * FROM `ids` WHERE `id` = '".$mysqli->real_escape_string($id)."'") or die($mysqli->error); 

    return $result->fetch_array(MYSQLI_ASSOC); 
} 

$data = getById(1); 

echo $data['id'];