Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7902581
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 3, 20262026-06-03T09:32:17+00:00 2026-06-03T09:32:17+00:00

I’m pretty new to both PDO and OOP. I’m trying to write a class

  • 0

I’m pretty new to both PDO and OOP. I’m trying to write a class that connects to a database and updates inserts and modifies it. I have several questions:

  1. Is it good practices to connect to the database in the constructor?

  2. Should the one class be updating, inserting, modifying and connecting or should it be split up into several classes?

  3. Why is runQuery not working? I assume its because $pdo is defined in a different scope. How would I get this working?

  4. If the class is include at the top of every page does that mean it will reconnect to the database every time a new page is loaded and will that cause security issues?

Apologies for the overload of questions. Thanks in advance for any answers.

<?php
class Login{

private $_username;
private $_password;
private $_host;
private $_database;
private $_driver;

//Connect to the database

function __construct($configFile){

    $connectionDetails = parse_ini_file($configFile);

    $this->_username = $connectionDetails['username'];
    $this->_password = $connectionDetails['password'];
    $this->_host = $connectionDetails['host'];
    $this->_database = $connectionDetails['database'];
    $this->_driver = $connectionDetails['driver'];

    $pdo = new PDO("$this->_driver:host=$this->_host;dbname=$this->_database", $this->_username, $this->_password);

}

public function loginAllowed($user, $pw){

    $sth = $pdo->setFetchMode(PDO::FETCH_ASSOC);
    print_r($sth);
}

public function runQuery($query, $params){
    $sth = $this->pdo->prepare($query);
    $sth->execute($params); 
}
}
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-03T09:32:18+00:00Added an answer on June 3, 2026 at 9:32 am

    Because $pdo is a local variable in your constructor and your method loginAllowed. You should make it an instance variable (private $pdo) so you can call it through $this->pdo. I also suggest to use type hinting here, give the PDO class as a parameter in the constructor.

    Example

    <?php
    class Login {
        private $pdo;
        // Your other instance variables
    
        public function __construct(PDO $pdo)
        {
            $this->pdo = $pdo;
        }
    
        // Your other methods
    }
    
    $pdo = new PDO("...");
    $login = new Login($pdo);
    

    You shouldn’t bother your class with reading settings and initialising your database connection (definitely read about separation of concerns), keep it out of your class. Just give the PDO object as a parameter (I used type hinting, that way you are forced to provide an object of the PDO type). Another advantage is that you can now make sure you have only one active database connection (you can manage this in your code base), creating multiple connections is unnecessary and definitely unwanted (performance wise).

    Also use require_once to include your class definition. Otherwise you will get many errors about redeclaring (and you’d want to avoid that).

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

That's pretty much it. I'm using Nokogiri to scrape a web page what has
I am doing a simple coin flipping experiment for class that involves flipping a
I'm parsing an RSS feed that has an &#8217; in it. SimpleXML turns this
I'm trying to create an if statement in PHP that prevents a single post
link Im having trouble converting the html entites into html characters, (&# 8217;) i
I am trying to understand how to use SyndicationItem to display feed which is
Basically, what I'm trying to create is a page of div tags, each has
I have a string like this: La Torre Eiffel paragonata all&#8217;Everest What PHP function
I've got a string that has curly quotes in it. I'd like to replace
I have a French site that I want to parse, but am running into

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.