A session is something you use to not have the user enter the password on every request. You store all the data you need about the user (e.g. is she logged in, with what username, etc.) on the server in some kind of lookup table. Then you pass the ID you need to look the information up to the user, so she can use it for authentication without password in the future.
There are many ways to implement this. All implementations need a lookup table (to store the data in), a random session ID generator, and a cookie or some other way to pass the ID between the user and the client.
PHP comes with an out of the box implementation. If you use the PHP session functions PHP will take care of generating the ID, setting and reading the cookies, and looking up the session data (which PHP saves in files on disk) for you. You do not need to worry about these things.
You could off course write your own implementation, using a database as a lookup table. However, there are a lot of tricky things about the implementation and unless you know what you are doing it is easy to make subtle mistakes that will make your system insecure. Therefore I would recommend you to just go with the solution PHP has already provided for you.
Finally, there is no need to use both PHP sessions and a database just to verify that the user is logged in. One is enough, and adding another does not give you any security gain. (You could off course use the database to look up information about the logged in user, such as username and email, but that is another matter.)