2017-07-18 35 views
-2

我有一個函數,其中包含從MYSQL數據庫獲取數據的預準備語句。我想知道如何「返回」數據,以便我可以在函數之外以及函數調用的任何地方使用它。PHP/MYSQL返回提取的值用於以後檢索

這是我的例子(不工作):

function dbGet($table, $userId) { 
    require_once('../php/connect.php'); 
    if ($stmt = $db->prepare(" SELECT * FROM `" . $table . "` WHERE id=? ")) { 
     $stmt->bind_param("i", $userId); 
     $stmt->execute(); 
     $result = $stmt->get_result(); 
     $rowNum = $result->num_rows; 

     if ($rowNum > 0) { 
     if ($user = $result->fetch_assoc()){ 
      return $user; 
     } 
     } 
     $stmt->close(); 
    } else { 
     die($db->error); 
    } 
    $db->close(); 
} 

然後在另一個網頁,我想這樣做:

dbGet('users', 23); 
$user->email; //To retrieve this user's email 
+0

那麼最新的問題是什麼? – RiggsFolly

+0

@RiggsFolly我不知道如何執行像我給的例子。甚至不知道我是否接近正確。 – Sergio

+0

您是否在腳本中包含腳本文件,該腳本文件中包含您要在 – RiggsFolly

回答

0

首先,如果你想從函數返回一個對象你需要從函數返回一個對象,而不是一個數組,所以改變->fetch_assoc()->fetch_object()

接下來你需要一個變量來把數據返回m的功能分爲

function dbGet($table, $userId) { 
    require_once('../php/connect.php'); 
    if ($stmt = $db->prepare(" SELECT * FROM `" . $table . "` WHERE id=? ")) { 
     $stmt->bind_param("i", $userId); 
     $stmt->execute(); 
     $result = $stmt->get_result(); 
     $rowNum = $result->num_rows; 

     if ($rowNum > 0) { 
     // return an object not an array 
     if ($user = $result->fetch_object()){ 
      return $user; 
     } 
     } 
     $stmt->close(); 
    } else { 
     die($db->error); 
    } 
    $db->close(); 
} 


// create the $user variable to hold the retuned info (an object) 
$user = dbGet('users', 23); 
echo $user->email; //To retrieve this user's email