2017-07-18 5 views
-2

私はMYSQL dbからデータを取得するプリペアドステートメントを含む関数を持っています。私は、関数の外でそれを使うことができるように、データを "返す"方法を知りたいと思います。ここで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()

次に、データを返す変数が必要です機能は

にあります。
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 
関連する問題