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