2017-07-18 80 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