PHP / MYSQL返回获取的值以便稍后检索

PHP / MYSQL返回获取的值以便稍后检索

问题描述:

I have a function that contains a prepared statement fetching data from a MYSQL db. I would like to know how to "return" the data so I can use it outside the function and wherever the function is called.

Here is my example (Not Working):

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();
}

Then in another page I would like to do something like this:

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

First if you want an object returned from the function you need to return an object from the function and not an array so change ->fetch_assoc() to ->fetch_object()

Next you need a variable to put the data returned from the function into

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