donglian3061 2016-09-23 19:08
浏览 37
已采纳

php准备语句绑定一个会话[重复]

How can I set a SESSION and bind it in a prepared statement, so I can get a result from mysqli where email is equal to my SESSION['email']?

I have this code that I can't get to work, so it only gets the result with my session email:

public static function getById($email) {

// Initialize session array
$email = $_SESSION['email'];

// Build database query
$sql = "select * from users where email = ?";

// Open database connection
$database = new Database();

// Get instance of statement
$statement = $database->stmt_init();

// Prepare query
if ($statement->prepare($sql)) {

// Bind parameters
$statement->bind_param('s', $email);

// Execute statement
$statement->execute();

// Bind variable to prepared statement
$statement->bind_result($id, $first_name, $last_name, $username, $email,     $created, $active);

// Populate bind variables
$statement->fetch();

// Close statement
$statement->close();
}

// Close database connection
$database->close();

// Build new object
$object = new self;
$object->id = $id;
$object->first_name = $first_name;
$object->last_name = $last_name;
$object->username = $username;
$object->email = $email;
$object->created = $created;
$object->active = $active;
return $object;
}
</div>
  • 写回答

2条回答 默认 最新

  • dre93205 2016-09-23 19:28
    关注
    $variable = "I am a variable";
    
    function getVariable() {
        echo $variable;
    }
    

    Q) Why would the above script error? A) Scopes...

    the $_SESSION['email'] cannot be accessed inside your method, you'll need to either global or define it or pass it in as an parameter.

    function getById($email)
    {
        echo $email;
    }
    
    session_start();
    getById($_SESSION['email']);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?